Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Documentation #55

Merged
merged 52 commits into from
Jun 11, 2024
Merged

Documentation #55

merged 52 commits into from
Jun 11, 2024

Conversation

aaprasad
Copy link
Contributor

@aaprasad aaprasad commented May 29, 2024

Here we address #54 by adding tutorials, and more documentation

Summary by CodeRabbit

  • Documentation

    • Enhanced README with detailed setup, training, and inference instructions.
    • Added comprehensive parameter guides for training and inference configurations.
    • Introduced detailed documentation for new models and modules, including GlobalTrackingTransformer and GTRRunner.
  • New Features

    • Added support for batch inference with multiple models.
    • Introduced new configuration files for inference and training.
  • Style

    • Improved documentation styling with new CSS for better readability.
  • Bug Fixes

    • Corrected docstring indentation for better clarity.
  • Refactor

    • Updated type annotations across various methods for better type checking and readability.

…`Instance` classes into separate modules within `io`
…`Instance` classes into separate modules within `io`
Copy link
Contributor

coderabbitai bot commented May 29, 2024

Warning

Rate limit exceeded

@aaprasad has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 16 minutes and 9 seconds before requesting another review.

How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Commits

Files that changed from the base of the PR and between 5ce73d8 and df26cec.

Walkthrough

The recent updates enhance the dreem repository by adding detailed documentation, improving type annotations, and refining method signatures. Notable changes include new configuration files for training and inference, the introduction of new modules for input/output operations, and comprehensive usage guides. These modifications aim to improve user experience, ensure better code readability, and provide thorough guidance for setting up, training, and running inference with the dreem models.

Changes

File(s) Change Summary
README.md Reorganized content with detailed setup, training, and inference guides.
dreem/datasets/sleap_dataset.py Updated get_instances method to return Frame objects instead of dictionaries.
dreem/inference/configs/README.md, ...yaml Added detailed inference parameters and configurations.
dreem/inference/track_queue.py Added type annotations to TrackQueue methods.
dreem/training/configs/README.md, ...yaml Detailed training parameters and configurations, including encoder_cfg modifications.
git, .gitignore Introduced new I/O functionalities and added site/ directory to .gitignore.
docs/... Added extensive documentation for configuration, usage, models, and I/O modules.
dreem/datasets/... Improved type annotations and docstring formatting for dataset-related methods.
dreem/inference/... Enhanced type annotations, docstring formatting, and return type specifications in inference modules.
dreem/io/visualize.py Specified parameter types for annotate_video function.

Poem

In the code where dreams take flight,
New guides and docs shine so bright.
Frames now dance, not just in lists,
With every change, a bug dismiss.
Type hints clear, configs in place,
DREEM evolves at a rapid pace.
🌟✨🐇


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@aaprasad aaprasad changed the base branch from main to aadi/refactor-inference May 29, 2024 21:26
README.md Outdated
## Usage

Here we describe a basic workflow from setting up data thru training and running inference
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Spelling

README.md Outdated

### Step 1.1: Get detections
One of the main advantages of this system is that we ***decouple** detection and tracking. This means that our model assumes that you already have detections available when you are ready to track. In order to get these detections we recommend a couple methods. For animal pose-estimation, we highly recommend heading over to [`sleap`](https://sleap.ai) and running through their work flow. For microscopy tracking, checkout [`trackmate`](https://imagej.net/plugins/trackmate/) as well as [`cellpose`](https://www.cellpose.org) and [`StarDist`](https://imagej.net/plugins/stardist). If you are only doing tracking (ie inference), then you once you have your detections you are good to go!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Double check markdown formatting (e.g., around decouple)

README.md Outdated
One of the main advantages of this system is that we ***decouple** detection and tracking. This means that our model assumes that you already have detections available when you are ready to track. In order to get these detections we recommend a couple methods. For animal pose-estimation, we highly recommend heading over to [`sleap`](https://sleap.ai) and running through their work flow. For microscopy tracking, checkout [`trackmate`](https://imagej.net/plugins/trackmate/) as well as [`cellpose`](https://www.cellpose.org) and [`StarDist`](https://imagej.net/plugins/stardist). If you are only doing tracking (ie inference), then you once you have your detections you are good to go!
### ***FOR TRAINING*** Step 1.2 Proofreading
Otherwise, we recommend using the `sleap-label` gui to proofread your track labels. For animal tracking, if you used `sleap` you can start proofreading right away. Otherwise if you used a different system (e.g `DeepLabCut`) check out `sleap.io.format` for available converters. With microscopy, we highly recommend starting out with `trackmate` and then proofreading in `sleap`. Here is [a converter from trackmate's output to a `.slp`](https://gist.github.com/aaprasad/5243be0785a40e9dafa1697ce2258e3e) file. In general, you can use [`sleap-io`](https://io.sleap.ai/latest/) to write a custom converter to `.slp` if you'd like to use the sleap-gui for proofreading
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Need a lot more information in this section. It needs to be clear that you need tracks to be assigned. An explicit example or way to check is also necessary.

Ultimately, a user needs to know whether or not their data is ready for use, and if not, how to prepare it. This section does not achieve that.

README.md Outdated
One of the main advantages of this system is that we ***decouple** detection and tracking. This means that our model assumes that you already have detections available when you are ready to track. In order to get these detections we recommend a couple methods. For animal pose-estimation, we highly recommend heading over to [`sleap`](https://sleap.ai) and running through their work flow. For microscopy tracking, checkout [`trackmate`](https://imagej.net/plugins/trackmate/) as well as [`cellpose`](https://www.cellpose.org) and [`StarDist`](https://imagej.net/plugins/stardist). If you are only doing tracking (ie inference), then you once you have your detections you are good to go!
### ***FOR TRAINING*** Step 1.2 Proofreading
Otherwise, we recommend using the `sleap-label` gui to proofread your track labels. For animal tracking, if you used `sleap` you can start proofreading right away. Otherwise if you used a different system (e.g `DeepLabCut`) check out `sleap.io.format` for available converters. With microscopy, we highly recommend starting out with `trackmate` and then proofreading in `sleap`. Here is [a converter from trackmate's output to a `.slp`](https://gist.github.com/aaprasad/5243be0785a40e9dafa1697ce2258e3e) file. In general, you can use [`sleap-io`](https://io.sleap.ai/latest/) to write a custom converter to `.slp` if you'd like to use the sleap-gui for proofreading
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Style note: Also, backticks are for code and CLI commands, or package names that are also importable/installable. SLEAP should be SLEAP, not sleap, same with the other softwares. sleap-io would be an exception since you can pip install sleap-io. The extensions (.slp) are also ok since you would use that string as a literal in code.

README.md Outdated
Comment on lines 65 to 70
vid_1.{VID_EXTENSION}
vid_1.{LABELS_EXTENSION} # these files don't need tracks
...
vid_n.{VID_EXTENSION}
vid_n.{LABELS_EXTENSION}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Put these in another section when you get to inference.

Also, do we really support any labels extension that isn't .slp? Either way, let's just be explicit.

We should also be explicit about the video extensions. Especially since we're doing microscopy, it would be good to know if zarr and multi-frame TIFF stacks are supported. Since sleap-io provides the layer for doing video reading, it's totally okay to redirect users to the sleap-io docs. (I'll add more explicit info there.)

@@ -0,0 +1,42 @@
# Description of inference params
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This needs an inline example of a config, maybe broken up by sections. Right now, it's not obvious what the user is supposed to be looking at on another screen/tab as they use the information in here for reference.

At a minimum, add a link to the reference example config that has all of these fields.

@@ -0,0 +1,180 @@
# Description of training parameters
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See above -- needs link to a concrete example.

Comment on lines 133 to 142
```YAML
augmentations:
Rotate:
limit: 45
p: 0.3
...
MotionBlur:
blur_limit: [3,7]
p: 0.3
```
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is great! A concrete example for how this subsection should be written. Have more of these everywhere.


### `dataloader`

This section outlines the params needed for the dataloader. Should have a `train_dataloader` and optionally `val_dataloader`/`test_dataloader` keys. See [`torch.utils.data.Dataloader`](https://pytorch.org/docs/stable/data.html#torch.utils.data.DataLoader) for available args.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Provide example and you NEED an entry for each field that we actually use in the yaml.

The docs you link to take many arguments that are not YAML-serializable (e.g., function handles), and it's also very unclear how these args are used in this codebase specifically.


* `logger_type`: A string indicating which logger to use. Available loggers are {`"CSVLogger"`, `"TensorBoardLogger"`,`"WandbLogger"`}

Note: Please see the documentation for the corresponding logger at [`lightning.loggers`](https://lightning.ai/docs/pytorch/stable/api_references.html#loggers) for available parameters.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No. Include the documentation HERE.

@aaprasad aaprasad marked this pull request as ready for review June 1, 2024 00:50
@talmo talmo self-requested a review June 1, 2024 00:57
@talmo talmo changed the title Aadi/documentation Documentation Jun 1, 2024
Base automatically changed from aadi/refactor-inference to main June 3, 2024 23:50
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 23

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between f04eb9f and 7320578.

Files selected for processing (7)
  • README.md (1 hunks)
  • dreem/datasets/sleap_dataset.py (1 hunks)
  • dreem/inference/configs/README.md (1 hunks)
  • dreem/inference/track_queue.py (2 hunks)
  • dreem/training/configs/README.md (1 hunks)
  • dreem/training/configs/base.yaml (1 hunks)
  • git (1 hunks)
Files skipped from review due to trivial changes (1)
  • dreem/training/configs/base.yaml
Additional context used
LanguageTool
dreem/inference/configs/README.md

[uncategorized] ~5-~5: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...nce. * ckpt_path: A str containing the path to the save...


[uncategorized] ~12-~12: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ``` * out_dir: A `str` containing a directory path whe...


[uncategorized] ~23-~23: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...configures the tracker. * window_size: the size of the window used during slid...


[uncategorized] ~24-~24: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ing sliding inference. * use_vis_feats: Whether or not to use visual feature ex...


[style] ~24-~24: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...g sliding inference. * use_vis_feats: Whether or not to use visual feature extractor. * `ove...


[uncategorized] ~25-~25: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...al feature extractor. * overlap_thresh: the trajectory overlap threshold to be ...


[uncategorized] ~26-~26: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... be used for assignment. * mult_thresh: Whether or not to use weight threshold....


[style] ~26-~26: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...e used for assignment. * mult_thresh: Whether or not to use weight threshold. * decay_time...


[uncategorized] ~27-~27: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to use weight threshold. * decay_time: weight for decay_time postprocessing....


[uncategorized] ~28-~28: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for decay_time postprocessing. * iou: Either {None, '', "mult" or "max"}. W...


[uncategorized] ~29-~29: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...max iou reweighting. * max_center_dist: distance threshold for filtering trajec...


[uncategorized] ~30-~30: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ry score matrix. * persistent_tracking: whether to keep a buffer across chunks ...


[uncategorized] ~31-~31: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...buffer across chunks or not. * max_gap: the max number of frames a trajectory c...


[uncategorized] ~32-~32: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ssing before termination. * max_tracks: the maximum number of tracks that can b...


[uncategorized] ~48-~48: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ## [dataset`](inference.yaml#L10-16): This section contains the params for in...


[uncategorized] ~53-~53: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.py) args * padding: An int representing the amount of pad...


[uncategorized] ~55-~55: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~55-~55: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...


[uncategorized] ~58-~58: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for training or validation. * n_chunks: Number of chunks to subsample from. Can...


[uncategorized] ~62-~62: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tracking challenge datasets. #### dir: This section allows you to pass a direc...


[uncategorized] ~65-~65: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to labels/videos individually * path: The path to the dir where the data is s...


[uncategorized] ~90-~90: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... all visible anchors. * handle_missing: how to handle missing single nodes. one...


[typographical] ~92-~92: Consider adding a comma. (IF_THEN_COMMA)
Context: ... missing the anchor. * if ignore then we use a mask instead of a crop and nan...


[style] ~93-~93: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... a crop and nan centroids/bboxes. * if centroid then we default to the pose ...


[typographical] ~93-~93: Consider adding a comma. (IF_THEN_COMMA)
Context: ...an centroids/bboxes. * if centroid then we default to the pose centroid as the ...

README.md

[style] ~35-~35: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...e a basic workflow from setting up data thru training and running inference. Regardl...


[style] ~35-~35: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...ference, we recommend at least skimming thru the entire tutorial as there may be use...


[uncategorized] ~43-~43: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... respective docs to get some familiarity but is not necessary. ### Setup #### Step ...


[style] ~67-~67: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...#### Step 1: Generate Ground Truth Data In order to train a model you need 2 things. 1. A v...


[uncategorized] ~71-~71: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...ported file types. - For microscopy data we currently support .tif files. Vide...


[grammar] ~77-~77: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...rate your initial labels we recommend a couple methods. - For animal pose-estimation, we high...


[uncategorized] ~78-~78: Write this as one word if you mean the noun “workflow”. (WORK_COMPOUNDS)
Context: ...s://sleap.ai) and running through their work flow. - For microscopy tracking, check out...


[uncategorized] ~81-~81: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ... you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest...


[style] ~81-~81: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...rent method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data com...


[uncategorized] ~81-~81: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE_2)
Context: ...ively, you can write a custom dataloader but that will take significantly more overh...


[uncategorized] ~83-~83: If this is a compound adjective that modifies the following noun, use a hyphen. (EN_COMPOUND_ADJECTIVE_INTERNAL)
Context: ... thing to train a good model is to have high quality data. In our case good quality means tw...


[typographical] ~83-~83: At the start of a sentence, a comma is usually required for the expression ‘In “our case,”’. (COMMA_OF_IN_PRPS_CASE)
Context: ... model is to have high quality data. In our case good quality means two things: 1. No i...


[style] ~87-~87: To elevate your writing, try using a synonym here. (HARD_TO)
Context: ...o avoid having detection coordinates be hard to distinguish. For instance, with anim...


[uncategorized] ~87-~87: The preposition “in” seems more likely in this position than the preposition “on”. (AI_EN_LECTOR_REPLACEMENT_PREPOSITION_ON_IN)
Context: ... we want to avoid having the key points on two instances. For segmentation, the bo...


[formatting] ~87-~87: Consider inserting a comma before ‘however’. (HOWEVER_MISSING_COMMA)
Context: ...ld be as tight as possible. This may be unavoidable however, in cases of occlusion and overlap. See ...


[uncategorized] ~88-~88: Possible missing preposition found. (AI_EN_LECTOR_MISSING_PREPOSITION)
Context: ... and bad detections. //TODO add example good vs bad detection. We recommend using t...


[style] ~92-~92: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...ting data to a SLEAP compatible format. In order to use the SLEAP gui you'll need to have y...


[uncategorized] ~93-~93: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...tible format. In order to use the SLEAP gui you'll need to have your labels and vid...


[uncategorized] ~93-~93: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ... you can start proofreading right away. Otherwise if you used a different system (e.g Dee...


[uncategorized] ~93-~93: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...herwise if you used a different system (e.g DeepLabCut) check out [`sleap.io.conver...


[uncategorized] ~93-~93: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ... used a different system (e.g DeepLabCut) check out [sleap.io.convert](https://...


[uncategorized] ~93-~93: A punctuation mark might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION)
Context: ... converter from trackmate's output to a .slp](https://gist.github.com/aaprasad/...


[uncategorized] ~93-~93: The grammatical number of this noun doesn’t look right. Consider replacing it. (AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
Context: ...freading. Once you've ensured that your labels files have no identity switches and you...


[grammar] ~97-~97: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...e recommend organizing your data with a couple things in mind. 1. Match video and labels fil...


[uncategorized] ~99-~99: The grammatical number of this noun doesn’t look right. Consider replacing it. (AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
Context: ...ple things in mind. 1. Match video and labels file stems. Because our dataloaders jus...


[style] ~99-~99: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[uncategorized] ~99-~99: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...der to make programmatic file searching easy its best to save your labels and vid fi...


[uncategorized] ~99-~99: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...o make programmatic file searching easy its best to save your labels and vid files ...


[style] ~99-~99: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[uncategorized] ~99-~99: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[uncategorized] ~99-~99: It seems likely that a singular genitive (’s) apostrophe is missing. (AI_HYDRA_LEO_APOSTROPHE_S_XS)
Context: ...best practice so you know which video a labels file corresponds to. 2. Store correspon...


[style] ~133-~133: Consider replacing this word to strengthen your wording. (AND_THAT)
Context: ...train script if you're an advanced user and would like to have some additional flex...


[grammar] ~137-~137: The word “checkout” is a noun. The verb is spelled with a space. (NOUN_VERB_CONFUSION)
Context: ... parameters needed for training. Please checkout the [README](biogtr/training/configs/...


[uncategorized] ~137-~137: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...set of parameters when training (for an example see [`biogtr/training/configs/params.ya...


[uncategorized] ~148-~148: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...side my /home/aaprasad/biogtr_configs directory I can call ```bash python /home/aaprasa...


[uncategorized] ~153-~153: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ... > Note: you can use relative paths as well but may be a bit riskier so we recommen...


[uncategorized] ~153-~153: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...relative paths as well but may be a bit riskier so we recommend absolute paths whenever...


[grammar] ~167-~167: It seems like one article is redundant in this context. (A_RB_A_JJ_NN)
Context: ...biogtr_configs` directory that contains a only a small selection of parameters that I'd like t...


[uncategorized] ~179-~179: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...E_CONFIG_STEM] section.param=value ``` e.g If now I want to override a couple para...


[grammar] ~180-~180: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...ue ``` e.g If now I want to override a couple parameters again, say change the number of attenti...


[grammar] ~186-~186: The verb “add” needs to be in the to-infinitive form. (MISSING_TO_BEFORE_A_VERB)
Context: ...wise an error will be thrown > if you'd like add a new parameter you can add ++ to the...


[uncategorized] ~187-~187: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...arameter exists, otherwise create a new one you can add a single + to the front o...


[typographical] ~188-~188: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence. (THUS_SENTENCE)
Context: ...t to make sure you've matched the param exactly, otherwise it will simply add a new parameter with...


[uncategorized] ~189-~189: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...and the original value won't change. > e.g doing model.n_head=3 will cause the o...


[uncategorized] ~193-~193: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...d the direct override or the file-based override however you can technically do both via...


[uncategorized] ~203-~203: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...g CLI and file-based override syntax > (e.g make sure section.param doesn't appea...


[uncategorized] ~214-~214: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...tem is that we decouple detection and tracking so you can use off-the-shelf high perfo...


[style] ~214-~214: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...estimators/segementors. This means that in order to run inference(tracking) with our model ...


[uncategorized] ~214-~214: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...der to run inference(tracking) with our model you need 3 things. 1. A pretrained mode...


[uncategorized] ~218-~218: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...ported file types. - For microscopy data we currently support .tif files. Vide...


[style] ~219-~219: Did you mean ‘different from’? ‘Different than’ is often considered colloquial style. (DIFFERENT_THAN)
Context: ... This labels file is slightly different than in training because we only need detect...


[typographical] ~219-~219: Consider adding two commas here. (OF_COURSE_COMMA)
Context: ...tions for tracking since the tracks will of course come from our model predictions. We st...


[uncategorized] ~221-~221: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...g SLEAP and TrackMate to generate these labels however this time you would only need t...


[uncategorized] ~221-~221: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...d your detections if you'd like to. For TrackMate we recommend using the "spots table" la...


[uncategorized] ~225-~225: The grammatical number of this noun doesn’t look right. Consider replacing it. (AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
Context: ...e used for training. 1. Match video and labels file stems. Because our dataloaders jus...


[style] ~225-~225: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[uncategorized] ~225-~225: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...der to make programmatic file searching easy its best to save your labels and vid fi...


[uncategorized] ~225-~225: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...o make programmatic file searching easy its best to save your labels and vid files ...


[style] ~225-~225: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[uncategorized] ~225-~225: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[uncategorized] ~225-~225: It seems likely that a singular genitive (’s) apostrophe is missing. (AI_HYDRA_LEO_APOSTROPHE_S_XS)
Context: ...best practice so you know which video a labels file corresponds to. 2. Store correspon...


[misspelling] ~244-~244: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...set up a config file that specifies 1. a ckpt_path 2. a out_dir 3. a `Tracke...


[misspelling] ~245-~245: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...ile that specifies 1. a ckpt_path 2. a out_dir 3. a Tracker config 4. a `d...


[uncategorized] ~253-~253: A comma may be missing after the conjunctive/linking adverb ‘Thus’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ...x for specifying arguments via the cli. Thus you can run inference via: ```bash pyt...


[uncategorized] ~266-~266: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...y parameters during inference as during training we recommend just using the cli-based o...


[uncategorized] ~266-~266: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE)
Context: ...ased override rather than the file based but you're more than welcome to do so. In ...


[style] ~267-~267: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...but you're more than welcome to do so. In order to override params via the CLI, we can use...


[uncategorized] ~272-~272: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...[CONFIG_STEM] section.param=[VALUE] ``` e.g if I want to set the window size of the...


[typographical] ~278-~278: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence. (THUS_SENTENCE)
Context: ...pecified in the config it will save to ./[OUTDIR]/[VID_NAME].biogtr_inference.slp, otherwise it will just save to `./results/[VID_NA...

dreem/training/configs/README.md

[uncategorized] ~5-~5: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...llwill initialize the value toNone` e.g > ```YAML > model: > d_model: #defaul...


[style] ~31-~31: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...) * return_intermediate_dec: (bool) whether or not to return the output from the intermedi...


[style] ~32-~32: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...iate decoder layers. * norm: (bool) whether or not to normalize output of encoder and deco...


[uncategorized] ~33-~33: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...er and decoder. * num_layers_attn_head: An int The number of layers in the [`...


[uncategorized] ~37-~37: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...### embedding_meta: This section contains parameters for ...


[style] ~49-~49: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ition embedding * normalize: (bool) whether or not to normalize the positions (Only used i...


[style] ~194-~194: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...i-anchor crops * pretrained: (bool) Whether or not to use a pretrained backbone or initial...


[uncategorized] ~213-~213: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ... ... ... ##### `torchvision`:YAML ... model: ... encoder_...


[uncategorized] ~228-~228: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...``` ### model Example: Putting it all together your `model` config section will look s...


[typographical] ~281-~281: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...


[grammar] ~289-~289: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...nalty) ### Examples: Here we provide a couple examples for different optimizers: #### [Adam]...


[typographical] ~322-~322: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...


[uncategorized] ~326-~326: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...`) The number of allowed epochs with no improvement after which the learning rate will be r...


[grammar] ~331-~331: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...in` mode. ### Examples: Here we give a couple examples of configs for different schedulers: #...


[uncategorized] ~358-~358: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: .... ``` ## tracker: This section contains parameters for i...


[uncategorized] ~362-~362: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tializing the Tracker * window_size: the size of the window used during slid...


[uncategorized] ~363-~363: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ing sliding inference. * use_vis_feats: Whether or not to use visual feature ex...


[style] ~363-~363: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...g sliding inference. * use_vis_feats: Whether or not to use visual feature extractor. * `ove...


[uncategorized] ~364-~364: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...al feature extractor. * overlap_thresh: the trajectory overlap threshold to be ...


[uncategorized] ~365-~365: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... be used for assignment. * mult_thresh: Whether or not to use weight threshold....


[style] ~365-~365: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...e used for assignment. * mult_thresh: Whether or not to use weight threshold. * decay_time...


[uncategorized] ~366-~366: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to use weight threshold. * decay_time: weight for decay_time postprocessing....


[uncategorized] ~367-~367: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for decay_time postprocessing. * iou: Either {None, '', "mult" or "max"}. W...


[uncategorized] ~368-~368: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...max iou reweighting. * max_center_dist: distance threshold for filtering trajec...


[uncategorized] ~369-~369: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ry score matrix. * persistent_tracking: whether to keep a buffer across chunks ...


[uncategorized] ~370-~370: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...buffer across chunks or not. * max_gap: the max number of frames a trajectory c...


[uncategorized] ~371-~371: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ssing before termination. * max_tracks: the maximum number of tracks that can b...


[style] ~436-~436: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...se.yaml#L62-65) This section indicates whether or not to track across chunks during training/...


[uncategorized] ~439-~439: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... during training. During validation and testing it may depend on whether you are testin...


[uncategorized] ~458-~458: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.py) args * padding: An int representing the amount of pad...


[uncategorized] ~460-~460: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~460-~460: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...


[uncategorized] ~463-~463: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for training or validation. * n_chunks: Number of chunks to subsample from. Can...


[uncategorized] ~467-~467: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tracking challenge datasets. #### dir: This section allows you to pass a direc...


[uncategorized] ~470-~470: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to labels/videos individually * path: The path to the dir where the data is s...


[uncategorized] ~487-~487: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ... ... ``` #### augmentations: This subsection contains params for al...


[uncategorized] ~510-~510: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... all visible anchors. * handle_missing: how to handle missing single nodes. one...


[typographical] ~512-~512: Consider adding a comma. (IF_THEN_COMMA)
Context: ... missing the anchor. * if ignore then we use a mask instead of a crop and nan...


[style] ~513-~513: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... a crop and nan centroids/bboxes. * if centroid then we default to the pose ...


[typographical] ~513-~513: Consider adding a comma. (IF_THEN_COMMA)
Context: ...an centroids/bboxes. * if centroid then we default to the pose centroid as the ...


[uncategorized] ~611-~611: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... for the dataloaders. For more advanced users see [torch.utils.data.Dataloader](htt...


[uncategorized] ~629-~629: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ``` ## logging: This section sets up logging for the tr...


[grammar] ~648-~648: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ... args. ### Examples: Here we provide a couple examples for different available loggers #### [`...


[uncategorized] ~667-~667: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...dule-lightning.pytorch.loggers.csv_logs): ```YAML ... logging: save_dir: "./l...


[uncategorized] ~682-~682: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...s early stopping for training runs. > Below we provide descriptions of the argument...


[style] ~682-~682: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... see `lightning.callbacks.EarlyStopping for available arguments for more fine ...


[misspelling] ~682-~682: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...pping) for available arguments for more fine grained control * monitor (str): quantity ...


[uncategorized] ~686-~686: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...ence (int`): number of checks with no improvement after which training will be stopped. ...


[uncategorized] ~711-~711: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...eckpointing during training * monitor: A list of metrics to save best models f...


[misspelling] ~715-~715: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...ound useful for checkpointing. For more fine grained control see [`lightning.callbacks.Model...


[uncategorized] ~715-~715: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...or checkpointing. For more fine grained control see [`lightning.callbacks.ModelCheckpoi...


[style] ~715-~715: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ...ting. For more fine grained control see lightning.callbacks.ModelCheckpoint for available checkpointing params and...


[typographical] ~717-~717: Consider adding a comma. (IF_THEN_COMMA)
Context: ...ectory to save the models. If left empty then we first try to save to `./models/[GROU...


[typographical] ~717-~717: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...ogger is wandb otherwise we just save to ./models * save_last: (bool): When True, saves a last.ckp...


[style] ~718-~718: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ... whenever a checkpoint file gets saved. Can be set to 'link' on a local filesystem ...


[misspelling] ~738-~738: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...ch/stable/common/trainer.html) for more fine grained control and how the trainer works in ...


[style] ~742-~742: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ...t]|str| int)The devices to use. Can be set to: * a positive number (`in...


[typographical] ~742-~742: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...| int)The devices to use. Can be set to: * a positive number (int|str`)...


[style] ~777-~777: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...a before training * enable: (bool) whether or not to view a batch * num_frames: (int)...


[style] ~779-~779: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ch to visualize * no_train: (bool) whether or not to train after visualization is complet...

Markdownlint
dreem/inference/configs/README.md

86-86: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


87-87: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


88-88: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


91-91: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


92-92: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


93-93: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


49-49: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


137-137: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


140-140: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


19-19: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


35-35: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


48-48: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


62-62: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


68-68: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


68-68: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


94-94: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


94-94: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


98-98: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


98-98: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


104-104: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


104-104: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


105-105: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


105-105: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


136-136: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


143-143: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


7-7: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


14-14: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


18-18: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


69-69: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


81-81: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


106-106: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


121-121: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


123-123: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


144-144: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


6-6: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


12-12: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


13-13: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


67-67: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


83-83: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


93-93: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


95-95: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


97-97: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


99-99: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


103-103: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


33-33: null (MD038, no-space-in-code)
Spaces inside code span elements


150-150: null (MD047, single-trailing-newline)
Files should end with a single newline character

README.md

78-78: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


79-79: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


41-41: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


78-78: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


90-90: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


100-100: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


156-156: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


180-180: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


187-187: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


188-188: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


193-193: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


201-201: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


203-203: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


226-226: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


243-243: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


259-259: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


9-9: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


10-10: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


10-10: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


14-14: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


14-14: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


15-15: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


15-15: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


16-16: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


16-16: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


20-20: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


20-20: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


24-24: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


24-24: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


28-28: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


28-28: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


36-36: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


45-45: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


46-46: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


46-46: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


52-52: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


52-52: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


58-58: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


58-58: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


67-67: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


76-76: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


92-92: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


155-155: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


160-160: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


173-173: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


207-207: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


212-212: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


222-222: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


265-265: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


277-277: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


277-277: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


13-13: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


17-17: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


19-19: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


21-21: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


23-23: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


25-25: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


27-27: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


29-29: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


48-48: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


50-50: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


54-54: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


56-56: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


60-60: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


62-62: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


103-103: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


145-145: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


149-149: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


184-184: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


194-194: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


196-196: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


198-198: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


200-200: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


229-229: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


272-272: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


274-274: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


276-276: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


39-39: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


69-69: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


78-78: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


157-157: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


215-215: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


225-225: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


244-244: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


29-29: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified


103-103: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified


229-229: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified

dreem/training/configs/README.md

506-506: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


507-507: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


508-508: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


511-511: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


512-512: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


513-513: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


743-743: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


744-744: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


745-745: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


746-746: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


37-37: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


62-62: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


137-137: Expected: 0 or 2; Actual: 4 (MD009, no-trailing-spaces)
Trailing spaces


147-147: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


159-159: Expected: 0 or 2; Actual: 3 (MD009, no-trailing-spaces)
Trailing spaces


186-186: Expected: 0 or 2; Actual: 12 (MD009, no-trailing-spaces)
Trailing spaces


278-278: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


315-315: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


319-319: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


327-327: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


454-454: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


610-610: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


613-613: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


630-630: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


637-637: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


677-677: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


680-680: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


686-686: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


717-717: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


737-737: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


743-743: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


744-744: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


746-746: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


796-796: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


804-804: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines


805-805: Expected: 1; Actual: 3 (MD012, no-multiple-blanks)
Multiple consecutive blank lines


37-37: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


47-47: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


47-47: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


51-51: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


51-51: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


54-54: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


77-77: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


78-78: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


78-78: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


115-115: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


125-125: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


125-125: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


138-138: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


138-138: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


160-160: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


198-198: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


199-199: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


199-199: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


227-227: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


227-227: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


257-257: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


265-265: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


274-274: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


288-288: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


290-290: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


290-290: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


302-302: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


302-302: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


315-315: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


330-330: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


333-333: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


346-346: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


346-346: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


358-358: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


374-374: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


387-387: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


397-397: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


398-398: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


398-398: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


410-410: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


410-410: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


422-422: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


422-422: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


434-434: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


441-441: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


467-467: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


473-473: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


473-473: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


487-487: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


491-491: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


502-502: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


502-502: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


514-514: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


514-514: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


518-518: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


518-518: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


524-524: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


524-524: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


525-525: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


525-525: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


569-569: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


569-569: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


608-608: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


616-616: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


629-629: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


647-647: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


649-649: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


649-649: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


667-667: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


678-678: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


692-692: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


722-722: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


759-759: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


781-781: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


782-782: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


782-782: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


789-789: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


789-789: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


796-796: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


796-796: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


6-6: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


13-13: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


63-63: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


79-79: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


98-98: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


100-100: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


114-114: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


127-127: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


137-137: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


139-139: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


147-147: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


149-149: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


159-159: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


200-200: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


212-212: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


214-214: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


226-226: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


229-229: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


256-256: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


266-266: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


273-273: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


291-291: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


301-301: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


303-303: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


314-314: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


334-334: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


345-345: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


347-347: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


357-357: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


375-375: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


386-386: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


399-399: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


409-409: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


411-411: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


421-421: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


423-423: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


433-433: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


442-442: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


474-474: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


486-486: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


492-492: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


501-501: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


526-526: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


568-568: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


570-570: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


607-607: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


617-617: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


650-650: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


668-668: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


677-677: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


693-693: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


723-723: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


760-760: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


783-783: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


788-788: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


790-790: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


795-795: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


797-797: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


46-46: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


48-48: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


50-50: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


52-52: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


53-53: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


119-119: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


121-121: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


121-121: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


123-123: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


124-124: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


472-472: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


503-503: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


513-513: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


515-515: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


517-517: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


519-519: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


523-523: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


738-738: null (MD034, no-bare-urls)
Bare URL used


372-372: null (MD038, no-space-in-code)
Spaces inside code span elements


643-643: null (MD038, no-space-in-code)
Spaces inside code span elements

Ruff
dreem/datasets/sleap_dataset.py

9-9: warnings imported but unused (F401)

Additional comments not posted (6)
git (1)

1-8: The file correctly lists all the new files added under the biogtr/io directory.

dreem/inference/configs/README.md (1)

1-150: The documentation is comprehensive and well-structured, providing detailed descriptions of various configuration parameters.

Tools
LanguageTool

[uncategorized] ~5-~5: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...nce. * ckpt_path: A str containing the path to the save...


[uncategorized] ~12-~12: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ``` * out_dir: A `str` containing a directory path whe...


[uncategorized] ~23-~23: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...configures the tracker. * window_size: the size of the window used during slid...


[uncategorized] ~24-~24: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ing sliding inference. * use_vis_feats: Whether or not to use visual feature ex...


[style] ~24-~24: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...g sliding inference. * use_vis_feats: Whether or not to use visual feature extractor. * `ove...


[uncategorized] ~25-~25: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...al feature extractor. * overlap_thresh: the trajectory overlap threshold to be ...


[uncategorized] ~26-~26: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... be used for assignment. * mult_thresh: Whether or not to use weight threshold....


[style] ~26-~26: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...e used for assignment. * mult_thresh: Whether or not to use weight threshold. * decay_time...


[uncategorized] ~27-~27: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to use weight threshold. * decay_time: weight for decay_time postprocessing....


[uncategorized] ~28-~28: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for decay_time postprocessing. * iou: Either {None, '', "mult" or "max"}. W...


[uncategorized] ~29-~29: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...max iou reweighting. * max_center_dist: distance threshold for filtering trajec...


[uncategorized] ~30-~30: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ry score matrix. * persistent_tracking: whether to keep a buffer across chunks ...


[uncategorized] ~31-~31: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...buffer across chunks or not. * max_gap: the max number of frames a trajectory c...


[uncategorized] ~32-~32: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ssing before termination. * max_tracks: the maximum number of tracks that can b...


[uncategorized] ~48-~48: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ## [dataset`](inference.yaml#L10-16): This section contains the params for in...


[uncategorized] ~53-~53: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.py) args * padding: An int representing the amount of pad...


[uncategorized] ~55-~55: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~55-~55: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...


[uncategorized] ~58-~58: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for training or validation. * n_chunks: Number of chunks to subsample from. Can...


[uncategorized] ~62-~62: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tracking challenge datasets. #### dir: This section allows you to pass a direc...


[uncategorized] ~65-~65: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to labels/videos individually * path: The path to the dir where the data is s...


[uncategorized] ~90-~90: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... all visible anchors. * handle_missing: how to handle missing single nodes. one...


[typographical] ~92-~92: Consider adding a comma. (IF_THEN_COMMA)
Context: ... missing the anchor. * if ignore then we use a mask instead of a crop and nan...


[style] ~93-~93: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... a crop and nan centroids/bboxes. * if centroid then we default to the pose ...


[typographical] ~93-~93: Consider adding a comma. (IF_THEN_COMMA)
Context: ...an centroids/bboxes. * if centroid then we default to the pose centroid as the ...

Markdownlint

86-86: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


87-87: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


88-88: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


91-91: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


92-92: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


93-93: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


49-49: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


137-137: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


140-140: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


19-19: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


35-35: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


48-48: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


62-62: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


68-68: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


68-68: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


94-94: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


94-94: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


98-98: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


98-98: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


104-104: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


104-104: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


105-105: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


105-105: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


136-136: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


143-143: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


7-7: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


14-14: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


18-18: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


69-69: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


81-81: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


106-106: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


121-121: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


123-123: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


144-144: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


6-6: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


12-12: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


13-13: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


67-67: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


83-83: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


93-93: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


95-95: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


97-97: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


99-99: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


103-103: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


33-33: null (MD038, no-space-in-code)
Spaces inside code span elements


150-150: null (MD047, single-trailing-newline)
Files should end with a single newline character

dreem/inference/track_queue.py (1)

Line range hint 17-46: The type annotations added to the methods enhance clarity and type safety. Good job on maintaining clean and understandable code.

dreem/datasets/sleap_dataset.py (1)

127-135: The update to return a list of Frame objects instead of dictionaries in the get_instances method aligns with the objective to improve data handling and consistency.

README.md (1)

244-244: Correct article usage.

- a `ckpt_path`
+ an `ckpt_path`

Likely invalid or redundant comment.

Tools
LanguageTool

[misspelling] ~244-~244: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...set up a config file that specifies 1. a ckpt_path 2. a out_dir 3. a `Tracke...

Markdownlint

244-244: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines

dreem/training/configs/README.md (1)

742-742: Clarify the conditional statement by adding a comma after "Can be set to".

- Can be set to:
+ Can be set to,

Likely invalid or redundant comment.

Tools
LanguageTool

[style] ~742-~742: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ...t]|str| int)The devices to use. Can be set to: * a positive number (`in...


[typographical] ~742-~742: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...| int)The devices to use. Can be set to: * a positive number (int|str`)...


### Training

#### Step 1: Generate Ground Truth Data
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simplify language to enhance clarity.

- In order to train a model you need 2 things.
+ To train a model, you need 2 things.

Committable suggestion was skipped due to low confidence.

Tools
LanguageTool

[style] ~67-~67: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...#### Step 1: Generate Ground Truth Data In order to train a model you need 2 things. 1. A v...

Markdownlint

67-67: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines

2. [`pytorch`](https://pytorch.org) for model construction
3. [`pytorch-lightning`](https://lightning.ai) for high-level training/eval/inference handling.

Thus, we recommend skimming through their respective docs to get some familiarity but is not necessary.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Consider adding a comma for clarity.

- Thus, we recommend skimming through their respective docs to get some familiarity but is not necessary.
+ Thus, we recommend skimming through their respective docs to get some familiarity, but it is not necessary.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
Thus, we recommend skimming through their respective docs to get some familiarity but is not necessary.
Thus, we recommend skimming through their respective docs to get some familiarity, but it is not necessary.
Tools
LanguageTool

[uncategorized] ~43-~43: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... respective docs to get some familiarity but is not necessary. ### Setup #### Step ...

2. A video.
- For animal data see the [`imageio`](https://imageio.readthedocs.io/en/v2.4.1/formats.html) docs for supported file types.
- For microscopy data we currently support `.tif` files. Video formats supported by `imageio` coming soon.
3. A labels file. This labels file is slightly different than in training because we only need detections for tracking since the tracks will of course come from our model predictions.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct grammatical errors.

- This labels file is slightly different than in training because we only need detections for tracking since the tracks will of course come from our model predictions.
+ This labels file is slightly different from training because we only need detections for tracking, as the tracks will, of course, come from our model predictions.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
3. A labels file. This labels file is slightly different than in training because we only need detections for tracking since the tracks will of course come from our model predictions.
3. A labels file. This labels file is slightly different from training because we only need detections for tracking, as the tracks will, of course, come from our model predictions.
Tools
LanguageTool

[style] ~219-~219: Did you mean ‘different from’? ‘Different than’ is often considered colloquial style. (DIFFERENT_THAN)
Context: ... This labels file is slightly different than in training because we only need detect...


[typographical] ~219-~219: Consider adding two commas here. (OF_COURSE_COMMA)
Context: ...tions for tracking since the tracks will of course come from our model predictions. We st...


This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](biogtr/datasets/sleap_dataset.py) and [microscopy](biogtr/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data compatible with `biogtr` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
##### Step 1.2 Proofreading
Once you have your labels file containing the detections and tracks, you'll want to make sure to proofread your labels. This is because object-tracking is hard and the methods we recommend above may have made mistakes. The most important thing to train a good model is to have high quality data. In our case good quality means two things:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Improve sentence structure for clarity.

- In our case good quality means two things:
+ In our case, good quality means two things:
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
Once you have your labels file containing the detections and tracks, you'll want to make sure to proofread your labels. This is because object-tracking is hard and the methods we recommend above may have made mistakes. The most important thing to train a good model is to have high quality data. In our case good quality means two things:
Once you have your labels file containing the detections and tracks, you'll want to make sure to proofread your labels. This is because object-tracking is hard and the methods we recommend above may have made mistakes. The most important thing to train a good model is to have high quality data. In our case, good quality means two things:
Tools
LanguageTool

[uncategorized] ~83-~83: If this is a compound adjective that modifies the following noun, use a hyphen. (EN_COMPOUND_ADJECTIVE_INTERNAL)
Context: ... thing to train a good model is to have high quality data. In our case good quality means tw...


[typographical] ~83-~83: At the start of a sentence, a comma is usually required for the expression ‘In “our case,”’. (COMMA_OF_IN_PRPS_CASE)
Context: ... model is to have high quality data. In our case good quality means two things: 1. No i...


We recommend using the [`sleap-label` gui](https://sleap.ai/guides/gui.html) for [proofreading](https://sleap.ai/guides/proofreading.html#id1). This is because SLEAP's in-built gui provides useful. functionality for visualizing detections, moving them, and reassigning tracks. It also provides some nice heuristics for flagging where switches may have occured.

###### Converting data to a SLEAP compatible format.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simplify language to enhance clarity.

- In order to use the SLEAP gui you'll need to have your labels and videos in a SLEAP compatible format.
+ To use the SLEAP gui, you'll need to have your labels and videos in a SLEAP compatible format.

Committable suggestion was skipped due to low confidence.

Tools
LanguageTool

[style] ~92-~92: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...ting data to a SLEAP compatible format. In order to use the SLEAP gui you'll need to have y...

Markdownlint

92-92: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


Although, our data loading does take paths to label files and video files directly so it's fairly flexible, we recommend organizing your data with a couple things in mind.

1. Match video and labels file stems. Because our dataloaders just take in a list of video files and a list of corresponding label files, the order in which the corresponding files are passed must match. (e.g `[file1.slp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy its best to save your labels and vid files with the same stem so that you can ensure the ordering will be consistent. Its also just best practice so you know which video a labels file corresponds to.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct grammatical errors and enhance clarity.

- Its also just best practice so you know which video a labels file corresponds to.
+ It's also just best practice so you know which video a label file corresponds to.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
1. Match video and labels file stems. Because our dataloaders just take in a list of video files and a list of corresponding label files, the order in which the corresponding files are passed must match. (e.g `[file1.slp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy its best to save your labels and vid files with the same stem so that you can ensure the ordering will be consistent. Its also just best practice so you know which video a labels file corresponds to.
1. Match video and labels file stems. Because our dataloaders just take in a list of video files and a list of corresponding label files, the order in which the corresponding files are passed must match. (e.g `[file1.slp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy its best to save your labels and vid files with the same stem so that you can ensure the ordering will be consistent. It's also just best practice so you know which video a label file corresponds to.
Tools
LanguageTool

[uncategorized] ~99-~99: The grammatical number of this noun doesn’t look right. Consider replacing it. (AI_EN_LECTOR_REPLACEMENT_NOUN_NUMBER)
Context: ...ple things in mind. 1. Match video and labels file stems. Because our dataloaders jus...


[style] ~99-~99: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[uncategorized] ~99-~99: A comma might be missing here. (AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)
Context: ...der to make programmatic file searching easy its best to save your labels and vid fi...


[uncategorized] ~99-~99: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...o make programmatic file searching easy its best to save your labels and vid files ...


[style] ~99-~99: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[uncategorized] ~99-~99: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[uncategorized] ~99-~99: It seems likely that a singular genitive (’s) apostrophe is missing. (AI_HYDRA_LEO_APOSTROPHE_S_XS)
Context: ...best practice so you know which video a labels file corresponds to. 2. Store correspon...


#### Step 1. Setup Data
##### Step 1.1 Get detections
One of the main advantages of this system is that we *decouple* detection and tracking so you can use off-the-shelf high performant detectors/pose-estimators/segementors. This means that in order to run inference(tracking) with our model you need 3 things.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Simplify language to enhance clarity.

- This means that in order to run inference(tracking) with our model you need 3 things.
+ This means that to run inference (tracking) with our model, you need 3 things.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
One of the main advantages of this system is that we *decouple* detection and tracking so you can use off-the-shelf high performant detectors/pose-estimators/segementors. This means that in order to run inference(tracking) with our model you need 3 things.
One of the main advantages of this system is that we *decouple* detection and tracking so you can use off-the-shelf high performant detectors/pose-estimators/segementors. This means that to run inference (tracking) with our model, you need 3 things.
Tools
LanguageTool

[uncategorized] ~214-~214: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...tem is that we decouple detection and tracking so you can use off-the-shelf high perfo...


[style] ~214-~214: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...estimators/segementors. This means that in order to run inference(tracking) with our model ...


[uncategorized] ~214-~214: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...der to run inference(tracking) with our model you need 3 things. 1. A pretrained mode...

2. Ground truth identities (also called tracks, or trajectories). These are temporally consistent labels that group detections through time.

##### Step 1.1: Get Initial labels
To generate your initial labels we recommend a couple methods.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct informal language.

- To generate your initial labels we recommend a couple methods.
+ To generate your initial labels, we recommend a couple of methods.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
To generate your initial labels we recommend a couple methods.
To generate your initial labels, we recommend a couple of methods.
Tools
LanguageTool

[grammar] ~77-~77: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...rate your initial labels we recommend a couple methods. - For animal pose-estimation, we high...

README.md Outdated
- For animal pose-estimation, we highly recommend heading over to [SLEAP](https://sleap.ai) and running through their work flow.
- For microscopy tracking, check out [TrackMate](https://imagej.net/plugins/trackmate/).

This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](biogtr/datasets/sleap_dataset.py) and [microscopy](biogtr/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data compatible with `biogtr` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct abbreviation and punctuation.

- (e.g DeepLabCut or ilastik etc), the easiest way to make your data compatible
+ (e.g., DeepLabCut or ilastik, etc.), the easiest way to make your data compatible
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](biogtr/datasets/sleap_dataset.py) and [microscopy](biogtr/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data compatible with `biogtr` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](biogtr/datasets/sleap_dataset.py) and [microscopy](biogtr/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method, (e.g., DeepLabCut or ilastik, etc.), the easiest way to make your data compatible with `biogtr` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
Tools
LanguageTool

[uncategorized] ~81-~81: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ... you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest...


[style] ~81-~81: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...rent method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data com...


[uncategorized] ~81-~81: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE_2)
Context: ...ively, you can write a custom dataloader but that will take significantly more overh...

README.md Outdated

##### Step 2.1. Setup Config:

The input into our training script is a `.yaml` file that contains all the parameters needed for training. Please checkout the [`README`](biogtr/training/configs/README.md) in `biogtr/training/configs` for a detailed description of all the parameters and how to set up the config. We also provide an example config in [`biogtr/training/configs/base.yaml`](biogtr/training/configs/base.yaml) to give you an idea for how the config should look. In general, the best practice is to keep a single `base.yaml` file which has all the default arguments you'd like to use. Then you can have a second `.yaml` file which will override only those specific set of parameters when training (for an example see [`biogtr/training/configs/params.yaml`](biogtr/training/configs/params.yaml)).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct spelling and punctuation.

- Please checkout the [`README`](biogtr/training/configs/README.md)
+ Please check out the [`README`](biogtr/training/configs/README.md)
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation.

Suggested change
The input into our training script is a `.yaml` file that contains all the parameters needed for training. Please checkout the [`README`](biogtr/training/configs/README.md) in `biogtr/training/configs` for a detailed description of all the parameters and how to set up the config. We also provide an example config in [`biogtr/training/configs/base.yaml`](biogtr/training/configs/base.yaml) to give you an idea for how the config should look. In general, the best practice is to keep a single `base.yaml` file which has all the default arguments you'd like to use. Then you can have a second `.yaml` file which will override only those specific set of parameters when training (for an example see [`biogtr/training/configs/params.yaml`](biogtr/training/configs/params.yaml)).
The input into our training script is a `.yaml` file that contains all the parameters needed for training. Please check out the [`README`](biogtr/training/configs/README.md) in `biogtr/training/configs` for a detailed description of all the parameters and how to set up the config. We also provide an example config in [`biogtr/training/configs/base.yaml`](biogtr/training/configs/base.yaml) to give you an idea for how the config should look. In general, the best practice is to keep a single `base.yaml` file which has all the default arguments you'd like to use. Then you can have a second `.yaml` file which will override only those specific set of parameters when training (for an example see [`biogtr/training/configs/params.yaml`](biogtr/training/configs/params.yaml)).
Tools
LanguageTool

[grammar] ~137-~137: The word “checkout” is a noun. The verb is spelled with a space. (NOUN_VERB_CONFUSION)
Context: ... parameters needed for training. Please checkout the [README](biogtr/training/configs/...


[uncategorized] ~137-~137: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...set of parameters when training (for an example see [`biogtr/training/configs/params.ya...

@aaprasad aaprasad requested a review from talmo June 10, 2024 21:09
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 59

Outside diff range and nitpick comments (51)
docs/io/frame.md (1)

2-2: Ensure the file ends with a single newline character.

Please add a newline at the end of the file to comply with Markdown best practices.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/track.md (1)

2-2: Ensure the file ends with a single newline character.

Please add a newline at the end of the file to comply with Markdown best practices.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/config.md (1)

2-2: Ensure the file ends with a single newline character.

Please add a newline at the end of the file to comply with Markdown best practices.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/instance.md (1)

2-2: Ensure the file ends with a single newline character.

Please add a newline at the end of the file to comply with Markdown best practices.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/configs/config.md (1)

2-2: Ensure the file ends with a single newline character.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/visualize.md (1)

2-2: Ensure the file ends with a single newline character.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/models/gtr_runner.md (1)

2-2: Ensure the file ends with a single newline character.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/asso_matrix.md (1)

2-2: Ensure the file ends with a single newline character.

Tools
Markdownlint

2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/index.md (1)

7-7: Remove trailing spaces to adhere to Markdown best practices.

Tools
Markdownlint

7-7: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces

docs/models/index.md (1)

17-17: Ensure the file ends with a single newline character.

Tools
Markdownlint

17-17: null (MD047, single-trailing-newline)
Files should end with a single newline character

dreem/io/track.py (1)

Line range hint 17-17: Resolve undefined names by importing necessary modules.

+ from dreem.io.instance import Instance
+ from dreem.io.frame import Frame

Also applies to: 46-46, 64-64, 82-82

Tools
Ruff

82-82: Undefined name Instance (F821)


82-82: Undefined name Instance (F821)

dreem/inference/track.py (3)

Line range hint 35-35: Rename unused loop variable to underscore prefix to indicate it's intentionally unused.

- for i, instance in enumerate(frame.instances):
+ for _i, instance in enumerate(frame.instances):
Tools
Ruff

18-18: Undefined name dreem (F821)


Line range hint 102-102: Use key in dict instead of key in dict.keys() for checking key existence.

- if "checkpoints" in cfg.keys():
+ if "checkpoints" in cfg:
Tools
Ruff

18-18: Undefined name dreem (F821)


Line range hint 120-120: Remove extraneous f prefix from the string as it does not contain placeholders.

- print(f"Saving {preds} to {outpath}")
+ print("Saving to", outpath)
Tools
Ruff

18-18: Undefined name dreem (F821)

dreem/models/global_tracking_transformer.py (1)

Line range hint 81-82: Undefined names Instance and AssociationMatrix could cause runtime errors. Ensure these are properly imported or defined.

dreem/datasets/microscopy_dataset.py (1)

Line range hint 86-86: Replace the lambda expression with a def for better readability and maintainability.

- parser = lambda x: data_utils.parse_synthetic(x, source=source)
+ def parser(x):
+     return data_utils.parse_synthetic(x, source=source)
dreem/models/model_utils.py (3)

Line range hint 3-3: Remove the unused import and correct the undefined name.

- from typing import List, Tuple, Iterable
+ from typing import List, Iterable
- def get_boxes(instances: List["dreem.io.Instance"]) -> torch.Tensor:
+ def get_boxes(instances: List[Instance]) -> torch.Tensor:

Also applies to: 8-8

Tools
Ruff

8-8: Undefined name dreem (F821)


Line range hint 19-19: Rename the unused loop variable to _.

- for i, instance in enumerate(instances):
+ for _, instance in enumerate(instances):
Tools
Ruff

8-8: Undefined name dreem (F821)


Line range hint 32-32: Correct the undefined names by importing the necessary classes.

+ from dreem.io import Instance

Also applies to: 33-33

Tools
Ruff

8-8: Undefined name dreem (F821)

dreem/inference/boxes.py (1)

Line range hint 129-129: Use f-string for better performance and readability.

- assert (b.dim() == 3), "Indexing on Boxes with {} failed to return a matrix!".format(item)
+ assert (b.dim() == 3), f"Indexing on Boxes with {item} failed to return a matrix!"
dreem/datasets/cell_tracking_dataset.py (1)

Line range hint 133-136: Use a ternary operator for simplicity and improved readability.

- if self.gt_list is not None:
-     gt_list = self.gt_list[label_idx]
- else:
-     gt_list = None
+ gt_list = self.gt_list[label_idx] if self.gt_list is not None else None
docs/configs/inference.md (2)

24-26: Consider simplifying the phrase "Whether or not" to "Whether" for conciseness.

Tools
LanguageTool

[style] ~24-~24: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ... inference. * use_vis_feats: (bool) Whether or not to use visual feature extractor. * `ove...


[style] ~26-~26: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...r assignment. * mult_thresh: (bool) Whether or not to use weight threshold. * decay_time...


[uncategorized] ~26-~26: You might be missing the article “a” here. (AI_EN_LECTOR_MISSING_DETERMINER_A)
Context: ...thresh: (bool) Whether or not to use weight threshold. * decay_time: (float`) we...


67-67: Consider adding a comma after "e.g" for grammatical correctness.

Tools
LanguageTool

[uncategorized] ~67-~67: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... the file extension to search for video files e.g .mp4, .avi or .tif. ##### Exa...

Markdownlint

67-67: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines

dreem/inference/metrics.py (3)

Line range hint 13-13: Undefined name 'dreem' suggests a missing import or incorrect module reference.

Consider adding the appropriate import statement or correcting the module path.


Line range hint 139-139: The loop control variable fidx is not used within the loop body.

- for fidx, frame in enumerate(frames):
+ for _fidx, frame in enumerate(frames):

Line range hint 232-232: The loop control variable metric_name is not used within the loop body.

- for metric_name, metric in metrics.items():
+ for _metric_name, metric in metrics.items():
dreem/inference/track_queue.py (2)

Line range hint 195-198: Use a ternary operator for concise code when determining vid_name.

- if isinstance(frame.video, str):
-     vid_name = frame.video
- else:
-     vid_name = frame.video.filename
+ vid_name = frame.video if isinstance(frame.video, str) else frame.video.filename

Line range hint 207-207: Use key not in dict instead of key not in dict.keys() for more idiomatic Python.

- if track not in self._curr_gap.keys():
+ if track not in self._curr_gap:

Also applies to: 251-251

dreem/io/visualize.py (1)

Line range hint 282-282: The loop control variable idx is not used within the loop body.

- for idx, (ds_name, data) in enumerate([(save_path, annotated_frames)]):
+ for _idx, (ds_name, data) in enumerate([(save_path, annotated_frames)]):
dreem/datasets/sleap_dataset.py (1)

119-119: Clarify the documentation for get_indices.

The method description could be more detailed, explaining what the label and frame indices represent and how they are used.

dreem/io/config.py (2)

Line range hint 82-82: Add missing imports for GlobalTrackingTransformer.

The class GlobalTrackingTransformer is used but not imported in this file, which could lead to runtime errors.


Line range hint 397-401: Simplify the initialization of trainer_params.

Use a ternary operator to make the code more concise and readable.

- if "trainer" in self.cfg:
-     trainer_params = self.cfg.trainer
- else:
-     trainer_params = {}
+ trainer_params = self.cfg.trainer if "trainer" in self.cfg else {}
dreem/datasets/data_utils.py (1)

Line range hint 267-267: Use a context manager for file operations in parse_trackmate.

Using a context manager ensures that files are properly closed after operations, which can prevent resource leaks.

dreem/io/frame.py (3)

Line range hint 57-57: Undefined name 'Instance' in the class definition.

The class Instance is referenced in the class definition but it is not imported or defined within this file. This will cause a runtime error. You should ensure that Instance is properly imported from its respective module.


Line range hint 58-58: Undefined name 'AssociationMatrix' in the class definition.

The class AssociationMatrix is used but not defined or imported in this file. This will lead to a runtime error. Please import AssociationMatrix from its respective module to resolve this issue.


Line range hint 553-553: Use key in dict instead of key in dict.keys().

Using key in dict is more Pythonic and slightly more efficient than key in dict.keys(). Here's how you can refactor the code:

- anchor for instance in self.instances for anchor in instance.centroid.keys()
+ anchor for instance in self.instances for anchor in instance.centroid
dreem/inference/tracker.py (5)

46-46: Clarify the comment regarding max_tracks.

The comment on line 46 is somewhat unclear. Consider rephrasing for better clarity, perhaps: "If max_tracks is reached, the tracker will assign instances to existing tracks instead of creating new ones."


Line range hint 124-124: Remove unnecessary f prefix and add stacklevel to warnings.

The f prefix is used without placeholders, and stacklevel is missing in warning calls, which could lead to confusion about the origin of the warning.

- warnings.warn(f"Clearing Queue after tracking")
+ warnings.warn("Clearing Queue after tracking", stacklevel=2)

- warnings.warn(f"New Video! Resetting Track Queue.")
+ warnings.warn("New Video! Resetting Track Queue.", stacklevel=2)

- warnings.warn(f"Initializing track on clip ind {batch_idx} frame {frame_to_track.frame_id.item()}")
+ warnings.warn(f"Initializing track on clip ind {batch_idx} frame {frame_to_track.frame_id.item()}", stacklevel=2)

- warnings.warn(f"Current number of tracks is {self.track_queue.n_tracks}")
+ warnings.warn(f"Current number of tracks is {self.track_queue.n_tracks}", stacklevel=2)

Also applies to: 152-152, 160-160, 169-169


Line range hint 174-174: Rename unused loop variables.

The loop variables i are not used within their respective loops. Consider renaming them to _ to indicate that they are unused.

- for i, instance in enumerate(frames[batch_idx].instances):
+ for _, instance in enumerate(frames[batch_idx].instances):

- for i, instance in enumerate(frames[batch_idx].instances):
+ for _, instance in enumerate(frames[batch_idx].instances):

Also applies to: 178-178


Line range hint 180-180: Correct the use of an undefined variable curr_track.

The variable curr_track is used but not defined in the scope, leading to potential runtime errors.

- curr_track += 1
+ self.track_queue.curr_track += 1

Line range hint 455-455: Remove unnecessary parentheses.

The parentheses around the expression are extraneous and can be removed for cleaner code.

- raise (e)
+ raise e
dreem/models/transformer.py (2)

63-69: Clarify the documentation for embedding_meta.

The documentation for embedding_meta is a bit unclear. Consider rephrasing for better clarity, especially around the structure and expected values of the dictionary. This will help developers understand how to use this feature more effectively.


Line range hint 144-145: Resolve undefined references to dreem.

The references to dreem.io.Instance in the forward method are undefined. This might be due to a missing import or incorrect namespace usage. Ensure that Instance is correctly imported from dreem.io.

dreem/io/instance.py (5)

Line range hint 93-93: Undefined name 'Frame' detected.

The Frame class is referenced but not defined or imported in this file. Ensure that it is properly imported to avoid runtime errors.

+ from some_module import Frame

Line range hint 212-212: Avoid using mutable default arguments.

Using mutable default arguments like lists can lead to unexpected behavior because they are initialized only once. Use None as a default and initialize within the function.

- crop: ArrayLike = None,
+ crop: Optional[ArrayLike] = None,

In the method body:

if crop is None:
    crop = []

Line range hint 243-243: Improve exception handling by using 'raise ... from'.

When re-raising exceptions, it's best to use raise ... from to provide context and differentiate between the original and new exceptions.

- raise RuntimeError(f"Failed to convert to sio.PredictedInstance: {e}")
+ raise RuntimeError(f"Failed to convert to sio.PredictedInstance: {e}") from e

Line range hint 290-293: Simplify boolean expressions.

Directly return the condition instead of using an if-else structure. This simplifies the code and improves readability.

- if self._gt_track_id.shape[0] == 0:
-     return False
- else:
-     return True
+ return self._gt_track_id.shape[0] != 0

Apply similar changes to has_pred_track_id, has_bbox, has_crop, and has_features.

Also applies to: 322-325, 362-365, 432-435, 470-473


Line range hint 520-520: Undefined name 'Frame' detected.

The Frame class is referenced but not defined or imported in this file. Ensure that it is properly imported to avoid runtime errors.

+ from some_module import Frame

Also applies to: 529-529

docs/configs/training.md (3)

5-18: Clarify the use of null in YAML configurations.

The documentation provides an example of using null to set a value to None. It might be helpful to explicitly state that this is specific to the YAML configuration and how it translates into the application's behavior, ensuring clarity for users unfamiliar with YAML nuances.

Tools
LanguageTool

[uncategorized] ~5-~5: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...llwill initialize the value toNone` e.g > ```YAML > model: > d_model: #defaul...

Markdownlint

6-6: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


13-13: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


22-36: Ensure consistency in documentation style.

The descriptions of parameters within the model section vary in detail and style. For instance, some parameters have a detailed explanation while others do not. Standardizing the detail level could improve the readability and usefulness of the documentation.

Tools
LanguageTool

[style] ~31-~31: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: .... * return_intermediate_dec: (bool) whether or not to return the output from the intermedi...


[style] ~32-~32: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...iate decoder layers. * norm: (bool) whether or not to normalize output of encoder and deco...


[uncategorized] ~33-~33: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...er and decoder. * num_layers_attn_head: An int The number of layers in the [`...

Markdownlint

36-36: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


317-329: Enhance scheduler configuration examples.

The examples provided for scheduler configurations are helpful, but adding a few more complex scenarios could demonstrate the flexibility and power of the scheduler settings more effectively. Consider scenarios where adjusting the learning rate based on specific performance metrics could be beneficial.

Tools
LanguageTool

[typographical] ~322-~322: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...

Markdownlint

319-319: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


327-327: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 7320578 and 5939591.

Files ignored due to path filters (2)
  • docs/assets/favicon.ico is excluded by !**/*.ico
  • docs/assets/sleap-logo.png is excluded by !**/*.png
Files selected for processing (46)
  • .gitignore (1 hunks)
  • README.md (2 hunks)
  • docs/configs/config.md (1 hunks)
  • docs/configs/index.md (1 hunks)
  • docs/configs/inference.md (1 hunks)
  • docs/configs/training.md (1 hunks)
  • docs/css/mkdocstrings.css (1 hunks)
  • docs/index.md (1 hunks)
  • docs/io/asso_matrix.md (1 hunks)
  • docs/io/config.md (1 hunks)
  • docs/io/frame.md (1 hunks)
  • docs/io/index.md (1 hunks)
  • docs/io/instance.md (1 hunks)
  • docs/io/track.md (1 hunks)
  • docs/io/visualize.md (1 hunks)
  • docs/models/global_tracking_transformer.md (1 hunks)
  • docs/models/gtr_runner.md (1 hunks)
  • docs/models/index.md (1 hunks)
  • docs/models/model_parts.md (1 hunks)
  • docs/usage.md (1 hunks)
  • dreem/datasets/base_dataset.py (2 hunks)
  • dreem/datasets/cell_tracking_dataset.py (1 hunks)
  • dreem/datasets/data_utils.py (2 hunks)
  • dreem/datasets/eval_dataset.py (1 hunks)
  • dreem/datasets/microscopy_dataset.py (1 hunks)
  • dreem/datasets/sleap_dataset.py (1 hunks)
  • dreem/inference/boxes.py (3 hunks)
  • dreem/inference/metrics.py (4 hunks)
  • dreem/inference/post_processing.py (2 hunks)
  • dreem/inference/track.py (1 hunks)
  • dreem/inference/track_queue.py (9 hunks)
  • dreem/inference/tracker.py (5 hunks)
  • dreem/io/association_matrix.py (1 hunks)
  • dreem/io/config.py (1 hunks)
  • dreem/io/frame.py (6 hunks)
  • dreem/io/instance.py (2 hunks)
  • dreem/io/track.py (2 hunks)
  • dreem/io/visualize.py (1 hunks)
  • dreem/models/global_tracking_transformer.py (1 hunks)
  • dreem/models/model_utils.py (5 hunks)
  • dreem/models/transformer.py (2 hunks)
  • dreem/models/visual_encoder.py (3 hunks)
  • dreem/training/configs/README.md (1 hunks)
  • mkdocs.yml (1 hunks)
  • pyproject.toml (1 hunks)
  • scripts/gen_ref_pages.py (1 hunks)
Files skipped from review due to trivial changes (6)
  • .gitignore
  • docs/css/mkdocstrings.css
  • dreem/datasets/eval_dataset.py
  • mkdocs.yml
  • pyproject.toml
  • scripts/gen_ref_pages.py
Additional context used
Markdownlint
docs/io/frame.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/track.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/config.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/instance.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/configs/config.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/visualize.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/models/gtr_runner.md

1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/asso_matrix.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/models/global_tracking_transformer.md

1-1: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


2-2: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/configs/index.md

3-3: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/models/model_parts.md

19-19: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/index.md

19-19: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


20-20: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


20-20: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


24-24: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


24-24: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


25-25: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


25-25: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


26-26: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


26-26: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


30-30: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


30-30: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


34-34: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


34-34: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


38-38: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


38-38: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


20-20: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


24-24: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


25-25: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


30-30: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


21-21: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


23-23: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


27-27: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


29-29: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


31-31: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


33-33: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


35-35: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


37-37: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


39-39: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


39-39: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified


41-41: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/io/index.md

7-7: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


1-1: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading

docs/models/index.md

3-3: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


9-9: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


17-17: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/configs/inference.md

101-101: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


102-102: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


103-103: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


106-106: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


107-107: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


108-108: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


49-49: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


151-151: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


154-154: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


19-19: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


35-35: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


48-48: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


62-62: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


68-68: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


68-68: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


86-86: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


97-97: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


97-97: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


109-109: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


109-109: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


113-113: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


113-113: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


119-119: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


119-119: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


136-136: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


136-136: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


150-150: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


157-157: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


35-35: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


62-62: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


68-68: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


82-82: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


97-97: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


7-7: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


14-14: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


18-18: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


69-69: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


81-81: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


87-87: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


96-96: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


121-121: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


135-135: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


137-137: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


158-158: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


6-6: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


12-12: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


13-13: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


67-67: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


98-98: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


108-108: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


110-110: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


112-112: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


114-114: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


118-118: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


33-33: null (MD038, no-space-in-code)
Spaces inside code span elements


170-170: null (MD047, single-trailing-newline)
Files should end with a single newline character

docs/usage.md

49-49: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


50-50: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


10-10: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


49-49: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


61-61: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


71-71: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


152-152: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


159-159: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


160-160: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


165-165: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


173-173: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


175-175: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


200-200: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


218-218: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


234-234: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


4-4: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


14-14: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


15-15: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


15-15: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


21-21: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


21-21: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


27-27: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


27-27: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


36-36: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


46-46: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


53-53: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


53-53: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


63-63: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


132-132: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


145-145: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


179-179: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


184-184: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


185-185: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


185-185: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


195-195: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


240-240: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


252-252: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


252-252: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


15-15: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


21-21: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


63-63: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


66-66: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


106-106: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


240-240: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


17-17: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


19-19: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


23-23: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


25-25: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


29-29: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


31-31: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


74-74: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


116-116: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


120-120: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


156-156: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


166-166: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


168-168: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


170-170: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


172-172: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


203-203: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


247-247: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


249-249: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


251-251: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


74-74: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified


203-203: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified

README.md

85-85: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


86-86: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


48-48: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


85-85: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


97-97: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


107-107: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


163-163: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


187-187: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


194-194: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


195-195: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


200-200: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


208-208: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


210-210: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


233-233: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


250-250: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


266-266: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


16-16: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


17-17: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


17-17: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


21-21: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


21-21: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


22-22: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


22-22: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


23-23: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


23-23: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


27-27: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


27-27: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


31-31: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


31-31: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


35-35: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


35-35: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


43-43: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


52-52: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


53-53: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


53-53: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


59-59: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


59-59: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


65-65: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


65-65: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


74-74: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


83-83: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


89-89: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


89-89: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


162-162: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


167-167: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


180-180: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


214-214: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


219-219: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


220-220: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


220-220: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


229-229: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


272-272: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


284-284: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


284-284: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


17-17: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


21-21: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


22-22: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


27-27: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


53-53: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


59-59: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


99-99: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


102-102: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


142-142: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


272-272: Punctuation: '.' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


18-18: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


20-20: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


24-24: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


26-26: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


28-28: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


30-30: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


32-32: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


34-34: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


55-55: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


57-57: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


61-61: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


63-63: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


67-67: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


69-69: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


110-110: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


152-152: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


156-156: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


191-191: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


201-201: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


203-203: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


205-205: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


207-207: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


236-236: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


279-279: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


281-281: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


283-283: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


46-46: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


76-76: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


85-85: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


164-164: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


222-222: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


232-232: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


251-251: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


36-36: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified


110-110: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified


236-236: null (MD040, fenced-code-language)
Fenced code blocks should have a language specified

dreem/training/configs/README.md

506-506: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


507-507: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


508-508: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


511-511: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


512-512: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


513-513: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


743-743: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


744-744: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


745-745: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


746-746: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


37-37: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


62-62: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


137-137: Expected: 0 or 2; Actual: 4 (MD009, no-trailing-spaces)
Trailing spaces


147-147: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


159-159: Expected: 0 or 2; Actual: 3 (MD009, no-trailing-spaces)
Trailing spaces


186-186: Expected: 0 or 2; Actual: 12 (MD009, no-trailing-spaces)
Trailing spaces


278-278: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


315-315: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


319-319: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


327-327: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


454-454: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


610-610: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


613-613: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


630-630: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


637-637: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


677-677: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


680-680: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


686-686: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


717-717: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


737-737: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


743-743: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


744-744: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


746-746: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


796-796: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


804-804: Expected: 1; Actual: 2 (MD012, no-multiple-blanks)
Multiple consecutive blank lines


805-805: Expected: 1; Actual: 3 (MD012, no-multiple-blanks)
Multiple consecutive blank lines


37-37: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


47-47: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


47-47: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


51-51: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


51-51: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


54-54: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


77-77: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


78-78: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


78-78: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


115-115: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


125-125: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


125-125: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


138-138: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


138-138: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


160-160: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


198-198: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


199-199: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


199-199: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


227-227: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


227-227: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


257-257: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


265-265: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


274-274: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


288-288: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


290-290: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


290-290: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


302-302: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


302-302: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


315-315: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


330-330: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


333-333: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


346-346: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


346-346: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


358-358: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


374-374: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


387-387: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


397-397: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


398-398: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


398-398: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


410-410: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


410-410: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


422-422: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


422-422: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


434-434: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


441-441: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


467-467: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


473-473: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


473-473: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


487-487: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


491-491: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


502-502: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


502-502: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


514-514: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


514-514: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


518-518: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


518-518: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


524-524: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


524-524: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


525-525: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


525-525: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


569-569: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


569-569: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


608-608: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


616-616: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


629-629: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


647-647: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


649-649: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


649-649: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


667-667: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


678-678: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


692-692: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


722-722: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


759-759: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


781-781: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


782-782: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


782-782: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


789-789: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


789-789: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


796-796: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


796-796: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


37-37: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


51-51: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


77-77: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


78-78: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


122-122: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


125-125: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


126-126: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


138-138: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


160-160: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


198-198: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


199-199: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


213-213: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


227-227: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


265-265: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


288-288: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


330-330: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


358-358: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


374-374: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


397-397: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


398-398: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


410-410: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


422-422: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


441-441: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


467-467: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


473-473: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


487-487: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


502-502: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


629-629: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


647-647: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


667-667: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


692-692: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


722-722: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


759-759: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


781-781: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


789-789: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


796-796: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


6-6: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


13-13: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


63-63: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


79-79: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


98-98: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


100-100: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


114-114: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


127-127: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


137-137: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


139-139: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


147-147: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


149-149: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


159-159: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


200-200: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


212-212: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


214-214: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


226-226: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


229-229: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


256-256: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


266-266: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


273-273: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


291-291: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


301-301: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


303-303: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


314-314: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


334-334: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


345-345: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


347-347: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


357-357: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


375-375: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


386-386: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


399-399: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


409-409: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


411-411: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


421-421: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


423-423: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


433-433: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


442-442: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


474-474: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


486-486: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


492-492: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


501-501: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


526-526: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


568-568: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


570-570: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


607-607: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


617-617: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


650-650: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


668-668: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


677-677: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


693-693: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


723-723: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


760-760: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


783-783: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


788-788: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


790-790: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


795-795: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


797-797: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


46-46: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


48-48: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


50-50: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


52-52: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


53-53: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


119-119: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


121-121: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


121-121: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


123-123: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


124-124: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


472-472: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


503-503: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


513-513: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


515-515: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


517-517: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


519-519: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


523-523: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


738-738: null (MD034, no-bare-urls)
Bare URL used


372-372: null (MD038, no-space-in-code)
Spaces inside code span elements


643-643: null (MD038, no-space-in-code)
Spaces inside code span elements

docs/configs/training.md

506-506: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


507-507: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


508-508: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


511-511: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


512-512: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


513-513: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


743-743: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


744-744: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


745-745: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


746-746: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


37-37: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


62-62: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


137-137: Expected: 0 or 2; Actual: 4 (MD009, no-trailing-spaces)
Trailing spaces


147-147: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


159-159: Expected: 0 or 2; Actual: 3 (MD009, no-trailing-spaces)
Trailing spaces


186-186: Expected: 0 or 2; Actual: 12 (MD009, no-trailing-spaces)
Trailing spaces


278-278: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


319-319: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


327-327: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


454-454: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


610-610: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


613-613: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


630-630: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


637-637: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


677-677: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


680-680: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


686-686: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


717-717: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


737-737: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


743-743: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


744-744: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


746-746: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


796-796: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


37-37: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


47-47: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


47-47: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


51-51: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


51-51: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


54-54: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


77-77: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


78-78: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


78-78: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


99-99: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


115-115: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


120-120: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


122-122: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


125-125: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


125-125: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


126-126: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


138-138: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


138-138: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


160-160: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


198-198: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


199-199: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


199-199: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


213-213: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


227-227: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


227-227: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


257-257: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


265-265: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


274-274: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


288-288: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


290-290: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


290-290: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


302-302: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


302-302: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


315-315: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


330-330: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


333-333: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


346-346: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


346-346: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


358-358: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


374-374: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


387-387: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


397-397: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


398-398: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


398-398: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


410-410: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


410-410: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


422-422: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


422-422: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


434-434: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


441-441: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


467-467: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


473-473: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


473-473: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


487-487: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


491-491: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


502-502: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


502-502: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


514-514: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


514-514: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


518-518: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


518-518: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


524-524: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


524-524: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


525-525: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


525-525: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


569-569: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


569-569: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


608-608: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


616-616: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


629-629: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


647-647: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


649-649: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


649-649: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


667-667: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


678-678: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


692-692: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


722-722: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


759-759: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


781-781: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


782-782: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


782-782: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


789-789: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


789-789: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


796-796: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


796-796: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


804-804: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


805-805: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


805-805: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


809-809: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


809-809: Expected: 1; Actual: 0; Below (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


804-804: null (MD025, single-title, single-h1)
Multiple top-level headings in the same document


37-37: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


51-51: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


77-77: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


78-78: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


122-122: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


125-125: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


126-126: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


138-138: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


160-160: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


198-198: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


199-199: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


213-213: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


227-227: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


265-265: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


288-288: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


330-330: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


358-358: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


374-374: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


397-397: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


398-398: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


410-410: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


422-422: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


441-441: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


467-467: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


473-473: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


487-487: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


502-502: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


629-629: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


647-647: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


667-667: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


692-692: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


722-722: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


759-759: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


781-781: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


789-789: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


796-796: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading


6-6: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


11-11: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


13-13: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


63-63: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


79-79: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


98-98: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


100-100: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


114-114: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


127-127: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


137-137: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


139-139: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


147-147: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


149-149: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


159-159: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


200-200: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


212-212: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


214-214: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


226-226: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


229-229: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


256-256: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


266-266: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


273-273: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


291-291: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


301-301: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


303-303: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


314-314: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


334-334: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


345-345: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


347-347: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


357-357: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


375-375: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


386-386: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


399-399: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


409-409: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


411-411: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


421-421: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


423-423: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


433-433: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


442-442: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


474-474: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


486-486: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


492-492: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


501-501: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


526-526: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


568-568: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


570-570: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


607-607: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


617-617: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


650-650: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


668-668: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


677-677: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


693-693: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


723-723: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


760-760: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


783-783: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


788-788: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


790-790: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


795-795: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


797-797: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


806-806: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


808-808: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


810-810: null (MD031, blanks-around-fences)
Fenced code blocks should be surrounded by blank lines


36-36: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


46-46: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


48-48: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


50-50: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


52-52: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


53-53: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


119-119: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


121-121: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


121-121: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


123-123: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


124-124: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


472-472: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


503-503: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


513-513: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


515-515: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


517-517: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


519-519: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


523-523: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


738-738: null (MD034, no-bare-urls)
Bare URL used


643-643: null (MD038, no-space-in-code)
Spaces inside code span elements


811-811: null (MD047, single-trailing-newline)
Files should end with a single newline character

LanguageTool
docs/models/index.md

[uncategorized] ~10-~10: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...have modularized each component so that its easy to compose into your own custom mo...


[uncategorized] ~12-~12: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...eference/dreem/models/visual_encoder.md): A CNN backbone used for feature extract...


[uncategorized] ~15-~15: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...m.models.transformer.TransformerEncoder): A stack of [TransformerEncoderLayers]...

docs/configs/inference.md

[style] ~24-~24: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ... inference. * use_vis_feats: (bool) Whether or not to use visual feature extractor. * `ove...


[style] ~26-~26: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...r assignment. * mult_thresh: (bool) Whether or not to use weight threshold. * decay_time...


[uncategorized] ~26-~26: You might be missing the article “a” here. (AI_EN_LECTOR_MISSING_DETERMINER_A)
Context: ...thresh: (bool) Whether or not to use weight threshold. * decay_time: (float`) we...


[uncategorized] ~53-~53: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.md) args * padding: An int representing the amount of pad...


[uncategorized] ~55-~55: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~55-~55: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...


[uncategorized] ~58-~58: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for training or validation. * n_chunks: Number of chunks to subsample from. Can...


[uncategorized] ~58-~58: You might be missing the article “a” here. (AI_EN_LECTOR_MISSING_DETERMINER_A)
Context: ...action of the dataset (ie (0,1.0]) or number of chunks * seed: set a seed for repr...


[uncategorized] ~62-~62: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tracking challenge datasets. #### dir: This section allows you to pass a direc...


[uncategorized] ~65-~65: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to labels/videos individually * path: The path to the dir where the data is s...


[uncategorized] ~67-~67: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... the file extension to search for video files e.g .mp4, .avi or .tif. ##### Exa...


[uncategorized] ~82-~82: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ... ... ``` #### augmentations: This subsection contains params for al...


[uncategorized] ~105-~105: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... all visible anchors. * handle_missing: how to handle missing single nodes. one...


[typographical] ~107-~107: Consider adding a comma. (IF_THEN_COMMA)
Context: ... missing the anchor. * if ignore then we use a mask instead of a crop and nan...


[style] ~108-~108: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... a crop and nan centroids/bboxes. * if centroid then we default to the pose ...


[typographical] ~108-~108: Consider adding a comma. (IF_THEN_COMMA)
Context: ...an centroids/bboxes. * if centroid then we default to the pose centroid as the ...


[uncategorized] ~152-~152: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... for the dataloaders. For more advanced users see [torch.utils.data.Dataloader](htt...

docs/usage.md

[style] ~3-~3: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...e a basic workflow from setting up data thru training and running inference. Regardl...


[style] ~3-~3: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...ference, we recommend at least skimming thru the entire tutorial as there may be use...


[style] ~36-~36: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ... ### Step 1: Generate Ground Truth Data In order to train a model you need 2 things. 1. A ...


[uncategorized] ~40-~40: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...2 things. 1. A video. - For animal data see the [imageio](https://imageio.rea...


[uncategorized] ~41-~41: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...ported file types. - For microscopy data we currently support .tif files. Vide...


[uncategorized] ~47-~47: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...Initial labels To generate your initial labels we recommend a couple methods. - For ...


[grammar] ~47-~47: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...rate your initial labels we recommend a couple methods. - For animal pose-estimation, we hig...


[uncategorized] ~49-~49: Write this as one word if you mean the noun “workflow”. (WORK_COMPOUNDS)
Context: ...s://sleap.ai) and running through their work flow. - For microscopy tracking, check out...


[uncategorized] ~52-~52: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ... you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest...


[style] ~52-~52: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...rent method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data com...


[uncategorized] ~52-~52: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE_2)
Context: ...ively, you can write a custom dataloader but that will take significantly more overh...


[uncategorized] ~54-~54: If this is a compound adjective that modifies the following noun, use a hyphen. (EN_COMPOUND_ADJECTIVE_INTERNAL)
Context: ... thing to train a good model is to have high quality data. In our case good quality means tw...


[typographical] ~54-~54: At the start of a sentence, a comma is usually required for the expression ‘In “our case,”’. (COMMA_OF_IN_PRPS_CASE)
Context: ... model is to have high quality data. In our case good quality means two things: 1. No i...


[style] ~58-~58: To elevate your writing, try using a synonym here. (HARD_TO)
Context: ...o avoid having detection coordinates be hard to distinguish. For instance, with anim...


[formatting] ~58-~58: Consider inserting a comma before ‘however’. (HOWEVER_MISSING_COMMA)
Context: ...ld be as tight as possible. This may be unavoidable however, in cases of occlusion and overlap. See ...


[style] ~63-~63: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...ting data to a SLEAP compatible format. In order to use the SLEAP gui you'll need to have y...


[uncategorized] ~64-~64: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...tible format. In order to use the SLEAP gui you'll need to have your labels and vid...


[uncategorized] ~64-~64: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ... you can start proofreading right away. Otherwise if you used a different system (e.g Dee...


[uncategorized] ~64-~64: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...herwise if you used a different system (e.g DeepLabCut) check out [`sleap.io.conver...


[grammar] ~68-~68: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...e recommend organizing your data with a couple things in mind. 1. Match video and labels fil...


[style] ~70-~70: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[uncategorized] ~70-~70: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...der to make programmatic file searching easy its best to save your labels and vid fi...


[uncategorized] ~70-~70: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...o make programmatic file searching easy its best to save your labels and vid files ...


[style] ~70-~70: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[uncategorized] ~70-~70: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[uncategorized] ~70-~70: It seems likely that a singular genitive (’s) apostrophe is missing. (AI_HYDRA_LEO_APOSTROPHE_S_XS)
Context: ...best practice so you know which video a labels file corresponds to. 2. Store correspon...


[style] ~104-~104: Consider replacing this word to strengthen your wording. (AND_THAT)
Context: ...train script if you're an advanced user and would like to have some additional flex...


[uncategorized] ~108-~108: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...set of parameters when training (for an example see [here](configs/training.md#override...


[uncategorized] ~119-~119: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...nside my /home/aaprasad/dreem_configs directory I can call ```bash python /home/aaprasa...


[uncategorized] ~124-~124: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...relative paths as well but may be a bit riskier so we recommend absolute paths whenever...


[grammar] ~139-~139: It seems like one article is redundant in this context. (A_RB_A_JJ_NN)
Context: .../dreem_configs` directory that contains a only a small selection of parameters that I'd like t...


[uncategorized] ~146-~146: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...g a specific param via the command line directly you can use the section.param=key syn...


[uncategorized] ~151-~151: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...E_CONFIG_STEM] section.param=value ``` e.g If now I want to override a couple para...


[grammar] ~152-~152: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...ue ``` e.g If now I want to override a couple parameters again, say change the number of attenti...


[grammar] ~158-~158: The verb “add” needs to be in the to-infinitive form. (MISSING_TO_BEFORE_A_VERB)
Context: ...wise an error will be thrown > if you'd like add a new parameter you can add ++ to the...


[typographical] ~160-~160: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence. (THUS_SENTENCE)
Context: ...t to make sure you've matched the param exactly, otherwise it will simply add a new parameter with...


[uncategorized] ~161-~161: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...and the original value won't change. > e.g doing model.n_head=3 will cause the o...


[uncategorized] ~165-~165: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...d the direct override or the file-based override however you can technically do both via...


[uncategorized] ~175-~175: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...g CLI and file-based override syntax > (e.g make sure section.param doesn't appea...


[uncategorized] ~186-~186: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...tem is that we decouple detection and tracking so you can use off-the-shelf high perfo...


[style] ~186-~186: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...estimators/segementors. This means that in order to run inference(tracking) with our model ...


[uncategorized] ~186-~186: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...der to run inference(tracking) with our model you need 3 things. 1. A pretrained mod...


[uncategorized] ~190-~190: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...kpt file. 2. A video. - For animal data see the [imageio`](https://imageio.rea...


[uncategorized] ~191-~191: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...ported file types. - For microscopy data we currently support .tif files. Vide...


[style] ~192-~192: Did you mean ‘different from’? ‘Different than’ is often considered colloquial style. (DIFFERENT_THAN)
Context: ... This labels file is slightly different than in training because we only need detect...


[uncategorized] ~192-~192: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...ing because we only need detections for tracking since the tracks will of course come fr...


[typographical] ~192-~192: Consider adding two commas here. (OF_COURSE_COMMA)
Context: ...tions for tracking since the tracks will of course come from our model predictions. We st...


[uncategorized] ~194-~194: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...d your detections if you'd like to. For TrackMate we recommend using the "spots table" la...


[style] ~199-~199: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[uncategorized] ~199-~199: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...der to make programmatic file searching easy its best to save your labels and vid fi...


[uncategorized] ~199-~199: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...o make programmatic file searching easy its best to save your labels and vid files ...


[style] ~199-~199: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[uncategorized] ~199-~199: “its” (belonging to it) seems less likely than “it’s” (it is) (AI_HYDRA_LEO_CPT_ITS_ITIS)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[uncategorized] ~199-~199: It seems likely that a singular genitive (’s) apostrophe is missing. (AI_HYDRA_LEO_APOSTROPHE_S_XS)
Context: ...best practice so you know which video a labels file corresponds to. 2. Store correspon...


[misspelling] ~219-~219: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...et up a config file that specifies 1. a ckpt_path 2. a out_dir 3. a `Tracke...


[misspelling] ~220-~220: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...le that specifies 1. a ckpt_path 2. a out_dir 3. a Tracker config 4. a `d...


[uncategorized] ~228-~228: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...e. ### Step 3 Run Inference Just like training we can use the hydra syntax for specify...


[uncategorized] ~228-~228: A comma may be missing after the conjunctive/linking adverb ‘Thus’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ...x for specifying arguments via the cli. Thus you can run inference via: ```bash pyt...


[uncategorized] ~241-~241: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE)
Context: ...ased override rather than the file based but you're more than welcome to do so. In ...


[style] ~242-~242: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...but you're more than welcome to do so. In order to override params via the CLI, we can use...


[uncategorized] ~247-~247: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...[CONFIG_STEM] section.param=[VALUE] ``` e.g if I want to set the window size of the...


[typographical] ~253-~253: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence. (THUS_SENTENCE)
Context: ...pecified in the config it will save to ./[OUTDIR]/[VID_NAME].dreem_inference.slp, otherwise it will just save to `./results/[VID_NA...

README.md

[style] ~42-~42: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...e a basic workflow from setting up data thru training and running inference. Regardl...


[style] ~42-~42: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...ference, we recommend at least skimming thru the entire tutorial as there may be use...


[style] ~74-~74: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...#### Step 1: Generate Ground Truth Data In order to train a model you need 2 things. 1. A v...


[grammar] ~84-~84: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...rate your initial labels we recommend a couple methods. - For animal pose-estimation, we high...


[uncategorized] ~85-~85: Write this as one word if you mean the noun “workflow”. (WORK_COMPOUNDS)
Context: ...s://sleap.ai) and running through their work flow. - For microscopy tracking, check out...


[uncategorized] ~88-~88: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ... you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest...


[style] ~88-~88: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...rent method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data com...


[uncategorized] ~88-~88: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE_2)
Context: ...ively, you can write a custom dataloader but that will take significantly more overh...


[uncategorized] ~90-~90: If this is a compound adjective that modifies the following noun, use a hyphen. (EN_COMPOUND_ADJECTIVE_INTERNAL)
Context: ... thing to train a good model is to have high quality data. In our case good quality means tw...


[typographical] ~90-~90: At the start of a sentence, a comma is usually required for the expression ‘In “our case,”’. (COMMA_OF_IN_PRPS_CASE)
Context: ... model is to have high quality data. In our case good quality means two things: 1. No i...


[style] ~94-~94: To elevate your writing, try using a synonym here. (HARD_TO)
Context: ...o avoid having detection coordinates be hard to distinguish. For instance, with anim...


[formatting] ~94-~94: Consider inserting a comma before ‘however’. (HOWEVER_MISSING_COMMA)
Context: ...ld be as tight as possible. This may be unavoidable however, in cases of occlusion and overlap. See ...


[style] ~99-~99: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...ting data to a SLEAP compatible format. In order to use the SLEAP gui you'll need to have y...


[uncategorized] ~100-~100: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ... you can start proofreading right away. Otherwise if you used a different system (e.g Dee...


[uncategorized] ~100-~100: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...herwise if you used a different system (e.g DeepLabCut) check out [`sleap.io.conver...


[grammar] ~104-~104: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...e recommend organizing your data with a couple things in mind. 1. Match video and labels fil...


[style] ~106-~106: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[style] ~106-~106: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[grammar] ~106-~106: Did you mean “it’s” (contraction of “it is/has”)? (ITS_TO_IT_S)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[style] ~140-~140: Consider replacing this word to strengthen your wording. (AND_THAT)
Context: ...train script if you're an advanced user and would like to have some additional flex...


[grammar] ~144-~144: The word “checkout” is a noun. The verb is spelled with a space. (NOUN_VERB_CONFUSION)
Context: ... parameters needed for training. Please checkout the [README](dreem/training/configs/R...


[grammar] ~174-~174: It seems like one article is redundant in this context. (A_RB_A_JJ_NN)
Context: .../dreem_configs` directory that contains a only a small selection of parameters that I'd like t...


[uncategorized] ~186-~186: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...E_CONFIG_STEM] section.param=value ``` e.g If now I want to override a couple para...


[grammar] ~187-~187: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...ue ``` e.g If now I want to override a couple parameters again, say change the number of attenti...


[grammar] ~193-~193: The verb “add” needs to be in the to-infinitive form. (MISSING_TO_BEFORE_A_VERB)
Context: ...wise an error will be thrown > if you'd like add a new parameter you can add ++ to the...


[typographical] ~195-~195: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence. (THUS_SENTENCE)
Context: ...t to make sure you've matched the param exactly, otherwise it will simply add a new parameter with...


[uncategorized] ~196-~196: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...and the original value won't change. > e.g doing model.n_head=3 will cause the o...


[uncategorized] ~210-~210: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...g CLI and file-based override syntax > (e.g make sure section.param doesn't appea...


[style] ~221-~221: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...estimators/segementors. This means that in order to run inference(tracking) with our model ...


[style] ~226-~226: Did you mean ‘different from’? ‘Different than’ is often considered colloquial style. (DIFFERENT_THAN)
Context: ... This labels file is slightly different than in training because we only need detect...


[typographical] ~226-~226: Consider adding two commas here. (OF_COURSE_COMMA)
Context: ...tions for tracking since the tracks will of course come from our model predictions. We st...


[style] ~232-~232: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...lp, file2.slp], [vid1.mp4, vid2.mp4]`). In order to make programmatic file searching easy i...


[style] ~232-~232: ‘vid’ is informal. Consider replacing it. (VID)
Context: ...g easy its best to save your labels and vid files with the same stem so that you ca...


[grammar] ~232-~232: Did you mean “it’s” (contraction of “it is/has”)? (ITS_TO_IT_S)
Context: ...ensure the ordering will be consistent. Its also just best practice so you know whi...


[misspelling] ~251-~251: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...set up a config file that specifies 1. a ckpt_path 2. a out_dir 3. a `Tracke...


[misspelling] ~252-~252: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...ile that specifies 1. a ckpt_path 2. a out_dir 3. a Tracker config 4. a `d...


[uncategorized] ~260-~260: A comma may be missing after the conjunctive/linking adverb ‘Thus’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ...x for specifying arguments via the cli. Thus you can run inference via: ```bash pyt...


[uncategorized] ~273-~273: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE)
Context: ...ased override rather than the file based but you're more than welcome to do so. In ...


[style] ~274-~274: Consider a shorter alternative to avoid wordiness. (IN_ORDER_TO_PREMIUM)
Context: ...but you're more than welcome to do so. In order to override params via the CLI, we can use...


[uncategorized] ~279-~279: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...[CONFIG_STEM] section.param=[VALUE] ``` e.g if I want to set the window size of the...


[typographical] ~285-~285: The word “otherwise” is an adverb that can’t be used like a conjunction, and therefore needs to be separated from the sentence. (THUS_SENTENCE)
Context: ...pecified in the config it will save to ./[OUTDIR]/[VID_NAME].dreem_inference.slp, otherwise it will just save to `./results/[VID_NA...

dreem/training/configs/README.md

[uncategorized] ~5-~5: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...llwill initialize the value toNone` e.g > ```YAML > model: > d_model: #defaul...


[style] ~31-~31: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...) * return_intermediate_dec: (bool) whether or not to return the output from the intermedi...


[style] ~32-~32: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...iate decoder layers. * norm: (bool) whether or not to normalize output of encoder and deco...


[uncategorized] ~33-~33: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...er and decoder. * num_layers_attn_head: An int The number of layers in the [`...


[uncategorized] ~37-~37: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...### embedding_meta: This section contains parameters for ...


[style] ~49-~49: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ition embedding * normalize: (bool) whether or not to normalize the positions (Only used i...


[style] ~194-~194: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...i-anchor crops * pretrained: (bool) Whether or not to use a pretrained backbone or initial...


[uncategorized] ~213-~213: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ... ... ... ##### `torchvision`:YAML ... model: ... encoder_...


[uncategorized] ~228-~228: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...``` ### model Example: Putting it all together your `model` config section will look s...


[typographical] ~281-~281: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...


[grammar] ~289-~289: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...nalty) ### Examples: Here we provide a couple examples for different optimizers: #### [Adam]...


[typographical] ~322-~322: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...


[uncategorized] ~324-~324: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...itored has stopped decreasing; in max mode it will be reduced when the quantity mo...


[grammar] ~331-~331: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...in` mode. ### Examples: Here we give a couple examples of configs for different schedulers: #...


[uncategorized] ~358-~358: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: .... ``` ## tracker: This section contains parameters for i...


[uncategorized] ~362-~362: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tializing the Tracker * window_size: the size of the window used during slid...


[uncategorized] ~363-~363: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ing sliding inference. * use_vis_feats: Whether or not to use visual feature ex...


[style] ~363-~363: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...g sliding inference. * use_vis_feats: Whether or not to use visual feature extractor. * `ove...


[uncategorized] ~364-~364: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...al feature extractor. * overlap_thresh: the trajectory overlap threshold to be ...


[uncategorized] ~365-~365: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... be used for assignment. * mult_thresh: Whether or not to use weight threshold....


[style] ~365-~365: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...e used for assignment. * mult_thresh: Whether or not to use weight threshold. * decay_time...


[uncategorized] ~366-~366: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to use weight threshold. * decay_time: weight for decay_time postprocessing....


[uncategorized] ~367-~367: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for decay_time postprocessing. * iou: Either {None, '', "mult" or "max"}. W...


[uncategorized] ~368-~368: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...max iou reweighting. * max_center_dist: distance threshold for filtering trajec...


[uncategorized] ~369-~369: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ry score matrix. * persistent_tracking: whether to keep a buffer across chunks ...


[uncategorized] ~370-~370: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...buffer across chunks or not. * max_gap: the max number of frames a trajectory c...


[uncategorized] ~371-~371: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ssing before termination. * max_tracks: the maximum number of tracks that can b...


[style] ~436-~436: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...se.yaml#L62-65) This section indicates whether or not to track across chunks during training/...


[uncategorized] ~458-~458: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.py) args * padding: An int representing the amount of pad...


[uncategorized] ~460-~460: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~460-~460: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...


[uncategorized] ~463-~463: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for training or validation. * n_chunks: Number of chunks to subsample from. Can...


[uncategorized] ~467-~467: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tracking challenge datasets. #### dir: This section allows you to pass a direc...


[uncategorized] ~470-~470: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to labels/videos individually * path: The path to the dir where the data is s...


[uncategorized] ~472-~472: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... the file extension to search for video files e.g .mp4, .avi or .tif. ##### Exa...


[uncategorized] ~487-~487: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ... ... ``` #### augmentations: This subsection contains params for al...


[uncategorized] ~510-~510: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... all visible anchors. * handle_missing: how to handle missing single nodes. one...


[typographical] ~512-~512: Consider adding a comma. (IF_THEN_COMMA)
Context: ... missing the anchor. * if ignore then we use a mask instead of a crop and nan...


[style] ~513-~513: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... a crop and nan centroids/bboxes. * if centroid then we default to the pose ...


[typographical] ~513-~513: Consider adding a comma. (IF_THEN_COMMA)
Context: ...an centroids/bboxes. * if centroid then we default to the pose centroid as the ...


[uncategorized] ~611-~611: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ..._dataloader/test_dataloader` keys. > Below we list the args we found useful/necess...


[uncategorized] ~629-~629: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ``` ## logging: This section sets up logging for the tr...


[uncategorized] ~638-~638: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...que in the project, and if you delete a run you can't reuse the ID. * project: (`...


[grammar] ~648-~648: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ... args. ### Examples: Here we provide a couple examples for different available loggers #### [`...


[uncategorized] ~667-~667: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...dule-lightning.pytorch.loggers.csv_logs): ```YAML ... logging: save_dir: "./l...


[style] ~682-~682: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... see `lightning.callbacks.EarlyStopping for available arguments for more fine ...


[misspelling] ~682-~682: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...pping) for available arguments for more fine grained control * monitor (str): quantity ...


[uncategorized] ~686-~686: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...ence (int`): number of checks with no improvement after which training will be stopped. ...


[uncategorized] ~711-~711: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...eckpointing during training * monitor: A list of metrics to save best models f...


[uncategorized] ~715-~715: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... checkpoints at the end of training. > Below we describe the arguments we found usef...


[misspelling] ~715-~715: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...ound useful for checkpointing. For more fine grained control see [`lightning.callbacks.Model...


[uncategorized] ~715-~715: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...or checkpointing. For more fine grained control see [`lightning.callbacks.ModelCheckpoi...


[style] ~715-~715: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ...ting. For more fine grained control see lightning.callbacks.ModelCheckpoint for available checkpointing params and...


[typographical] ~717-~717: Consider adding a comma. (IF_THEN_COMMA)
Context: ...ectory to save the models. If left empty then we first try to save to `./models/[GROU...


[typographical] ~717-~717: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...ogger is wandb otherwise we just save to ./models * save_last: (bool): When True, saves a last.ckp...


[style] ~718-~718: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ... whenever a checkpoint file gets saved. Can be set to 'link' on a local filesystem ...


[uncategorized] ~738-~738: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...htning.Trainer` object for training. > Below we describe the arguments we found usef...


[misspelling] ~738-~738: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...ch/stable/common/trainer.html) for more fine grained control and how the trainer works in ...


[style] ~742-~742: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ...t]|str| int)The devices to use. Can be set to: * a positive number (`in...


[typographical] ~742-~742: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...| int)The devices to use. Can be set to: * a positive number (int|str`)...


[style] ~777-~777: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...a before training * enable: (bool) whether or not to view a batch * num_frames: (int)...


[style] ~779-~779: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ch to visualize * no_train: (bool) whether or not to train after visualization is complet...

docs/configs/training.md

[uncategorized] ~5-~5: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...llwill initialize the value toNone` e.g > ```YAML > model: > d_model: #defaul...


[style] ~31-~31: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: .... * return_intermediate_dec: (bool) whether or not to return the output from the intermedi...


[style] ~32-~32: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...iate decoder layers. * norm: (bool) whether or not to normalize output of encoder and deco...


[uncategorized] ~33-~33: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...er and decoder. * num_layers_attn_head: An int The number of layers in the [`...


[uncategorized] ~37-~37: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ion in the decoder. ### embedding_meta: This section contains parameters for ...


[style] ~49-~49: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ition embedding * normalize: (bool) whether or not to normalize the positions (Only used i...


[style] ~194-~194: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...i-anchor crops * pretrained: (bool) Whether or not to use a pretrained backbone or initial...


[uncategorized] ~213-~213: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... ... ... ... ##### `torchvision`:YAML ... model: ... encoder_...


[uncategorized] ~228-~228: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...``` ### model Example: Putting it all together your `model` config section will look s...


[typographical] ~281-~281: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...


[grammar] ~289-~289: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...nalty) ### Examples: Here we provide a couple examples for different optimizers: #### [Adam]...


[typographical] ~322-~322: Consider adding a comma here. (PLEASE_COMMA)
Context: ... is our default. For more advanced users please see the respective pytorch documentatio...


[grammar] ~331-~331: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ...in` mode. ### Examples: Here we give a couple examples of configs for different schedulers: #...


[uncategorized] ~358-~358: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...0 verbose: True ... ``` ## tracker: This section contains parameters for i...


[uncategorized] ~362-~362: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...m/inference/tracker.md) * window_size: the size of the window used during slid...


[uncategorized] ~363-~363: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ing sliding inference. * use_vis_feats: Whether or not to use visual feature ex...


[style] ~363-~363: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...g sliding inference. * use_vis_feats: Whether or not to use visual feature extractor. * `ove...


[uncategorized] ~364-~364: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...al feature extractor. * overlap_thresh: the trajectory overlap threshold to be ...


[uncategorized] ~365-~365: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... be used for assignment. * mult_thresh: Whether or not to use weight threshold....


[style] ~365-~365: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...e used for assignment. * mult_thresh: Whether or not to use weight threshold. * decay_time...


[uncategorized] ~366-~366: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to use weight threshold. * decay_time: weight for decay_time postprocessing....


[uncategorized] ~367-~367: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for decay_time postprocessing. * iou: Either {None, '', "mult" or "max"}. W...


[uncategorized] ~368-~368: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...max iou reweighting. * max_center_dist: distance threshold for filtering trajec...


[uncategorized] ~369-~369: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ry score matrix. * persistent_tracking: whether to keep a buffer across chunks ...


[uncategorized] ~370-~370: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...buffer across chunks or not. * max_gap: the max number of frames a trajectory c...


[uncategorized] ~371-~371: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ssing before termination. * max_tracks: the maximum number of tracks that can b...


[style] ~436-~436: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...stent_tracking` This section indicates whether or not to track across chunks during training/...


[uncategorized] ~458-~458: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.md) args * padding: An int representing the amount of pad...


[uncategorized] ~460-~460: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~460-~460: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...


[uncategorized] ~463-~463: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for training or validation. * n_chunks: Number of chunks to subsample from. Can...


[uncategorized] ~467-~467: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...tracking challenge datasets. #### dir: This section allows you to pass a direc...


[uncategorized] ~470-~470: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to labels/videos individually * path: The path to the dir where the data is s...


[uncategorized] ~472-~472: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... the file extension to search for video files e.g .mp4, .avi or .tif. ##### Exa...


[uncategorized] ~487-~487: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ... ... ``` #### augmentations: This subsection contains params for al...


[uncategorized] ~510-~510: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... all visible anchors. * handle_missing: how to handle missing single nodes. one...


[typographical] ~512-~512: Consider adding a comma. (IF_THEN_COMMA)
Context: ... missing the anchor. * if ignore then we use a mask instead of a crop and nan...


[style] ~513-~513: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... a crop and nan centroids/bboxes. * if centroid then we default to the pose ...


[typographical] ~513-~513: Consider adding a comma. (IF_THEN_COMMA)
Context: ...an centroids/bboxes. * if centroid then we default to the pose centroid as the ...


[uncategorized] ~611-~611: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ..._dataloader/test_dataloader` keys. > Below we list the args we found useful/necess...


[uncategorized] ~611-~611: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ... for the dataloaders. For more advanced users see [torch.utils.data.Dataloader](htt...


[uncategorized] ~629-~629: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... num_workers: 4 ``` ## logging: This section sets up logging for the tr...


[uncategorized] ~638-~638: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...que in the project, and if you delete a run you can't reuse the ID. * project: (`...


[grammar] ~648-~648: Using ‘couple’ without ‘of’ is considered to be informal. (PLENTY_OF_NOUNS)
Context: ... args. ### Examples: Here we provide a couple examples for different available loggers #### [`...


[uncategorized] ~667-~667: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...dule-lightning.pytorch.loggers.csv_logs): ```YAML ... logging: save_dir: "./l...


[uncategorized] ~682-~682: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...s early stopping for training runs. > Below we provide descriptions of the argument...


[style] ~682-~682: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ... see `lightning.callbacks.EarlyStopping for available arguments for more fine ...


[misspelling] ~682-~682: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...pping) for available arguments for more fine grained control * monitor (str): quantity ...


[uncategorized] ~711-~711: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...eckpointing during training * monitor: A list of metrics to save best models f...


[misspelling] ~715-~715: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...ound useful for checkpointing. For more fine grained control see [`lightning.callbacks.Model...


[uncategorized] ~715-~715: Possible missing comma found. (AI_HYDRA_LEO_MISSING_COMMA)
Context: ...or checkpointing. For more fine grained control see [`lightning.callbacks.ModelCheckpoi...


[style] ~715-~715: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym. (ENGLISH_WORD_REPEAT_BEGINNING_RULE)
Context: ...ting. For more fine grained control see lightning.callbacks.ModelCheckpoint for available checkpointing params and...


[typographical] ~717-~717: Consider adding a comma. (IF_THEN_COMMA)
Context: ...ectory to save the models. If left empty then we first try to save to `./models/[GROU...


[typographical] ~717-~717: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...ogger is wandb otherwise we just save to ./models * save_last: (bool): When True, saves a last.ckp...


[style] ~718-~718: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ... whenever a checkpoint file gets saved. Can be set to 'link' on a local filesystem ...


[misspelling] ~738-~738: This word is normally spelled with a hyphen. (EN_COMPOUNDS_FINE_GRAINED)
Context: ...ch/stable/common/trainer.html) for more fine grained control and how the trainer works in ...


[style] ~742-~742: To form a complete sentence, be sure to include a subject. (MISSING_IT_THERE)
Context: ...t]|str| int)The devices to use. Can be set to: * a positive number (`in...


[typographical] ~742-~742: Do not use a colon (:) before a series that is introduced by a preposition (‘to’). Remove the colon or add a noun or a noun phrase after the preposition. (RP_COLON)
Context: ...| int)The devices to use. Can be set to: * a positive number (int|str`)...


[style] ~777-~777: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...a before training * enable: (bool) whether or not to view a batch * num_frames: (int)...


[style] ~779-~779: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ch to visualize * no_train: (bool) whether or not to train after visualization is complet...

Ruff
dreem/io/track.py

17-17: Undefined name Instance (F821)


46-46: Undefined name Instances (F821)


64-64: Undefined name Frame (F821)


82-82: Undefined name Instance (F821)


82-82: Undefined name Instance (F821)

dreem/inference/track.py

18-18: Undefined name dreem (F821)


35-35: Loop control variable i not used within loop body (B007)

Rename unused i to _i


102-102: Use key in dict instead of key in dict.keys() (SIM118)

Remove .keys()


120-120: f-string without any placeholders (F541)

Remove extraneous f prefix

dreem/models/visual_encoder.py

3-3: typing.Tuple imported but unused (F401)

Remove unused import: typing.Tuple

dreem/models/global_tracking_transformer.py

81-81: Undefined name Instance (F821)


81-81: Undefined name Instance (F821)


82-82: Undefined name AssociationMatrix (F821)


103-103: Undefined name Instance (F821)

dreem/datasets/microscopy_dataset.py

86-86: Do not assign a lambda expression, use a def (E731)

Rewrite parser as a def


173-174: Use a single if statement instead of nested if statements (SIM102)

Combine if statements using and

dreem/models/model_utils.py

3-3: typing.Tuple imported but unused (F401)

Remove unused import: typing.Tuple


8-8: Undefined name dreem (F821)


19-19: Loop control variable i not used within loop body (B007)

Rename unused i to _i


32-32: Undefined name dreem (F821)


33-33: Undefined name dreem (F821)

dreem/inference/boxes.py

129-129: Use f-string instead of format call (UP032)

Convert to f-string

dreem/datasets/cell_tracking_dataset.py

133-136: Use ternary operator gt_list = self.gt_list[label_idx] if self.gt_list is not None else None instead of if-else-block (SIM108)

Replace if-else-block with gt_list = self.gt_list[label_idx] if self.gt_list is not None else None

dreem/inference/metrics.py

13-13: Undefined name dreem (F821)


104-104: Undefined name dreem (F821)


139-139: Loop control variable fidx not used within loop body (B007)

Rename unused fidx to _fidx


232-232: Loop control variable metric_name not used within loop body (B007)

Rename unused metric_name to _metric_name

dreem/inference/track_queue.py

195-198: Use ternary operator vid_name = frame.video if isinstance(frame.video, str) else frame.video.filename instead of if-else-block (SIM108)

Replace if-else-block with vid_name = frame.video if isinstance(frame.video, str) else frame.video.filename


207-207: Use key not in dict instead of key not in dict.keys() (SIM118)

Remove .keys()


214-214: No explicit stacklevel keyword argument found (B028)


249-249: Loop control variable track not used within loop body (B007)

Rename unused track to _track


251-251: Use key not in dict instead of key not in dict.keys() (SIM118)

Remove .keys()


289-289: No explicit stacklevel keyword argument found (B028)


302-302: No explicit stacklevel keyword argument found (B028)

dreem/io/visualize.py

282-282: Loop control variable idx not used within loop body (B007)

Rename unused idx to _idx

dreem/io/association_matrix.py

38-41: Avoid extraneous parentheses (UP034)

Remove extraneous parentheses


57-60: Avoid extraneous parentheses (UP034)

Remove extraneous parentheses


114-114: f-string without any placeholders (F541)

Remove extraneous f prefix


140-140: f-string without any placeholders (F541)

Remove extraneous f prefix


205-205: Loop control variable row_track not used within loop body (B007)

Rename unused row_track to _row_track


206-206: Loop control variable col_track not used within loop body (B007)

Rename unused col_track to _col_track

dreem/datasets/sleap_dataset.py

9-9: warnings imported but unused (F401)

Remove unused import: warnings


149-149: Loop control variable i not used within loop body (B007)

Rename unused i to _i

dreem/io/config.py

56-56: Undefined name params_cfg (F821)


82-82: Undefined name GlobalTrackingTransformer (F821)


94-94: Undefined name GTRRunner (F821)


110-110: Undefined name GTRRunner (F821)


167-167: Undefined name SleapDataset (F821)


167-167: Undefined name MicroscopyDataset (F821)


167-167: Undefined name CellTrackingDataset (F821)


231-231: Undefined name SleapDataset (F821)


231-231: Undefined name MicroscopyDataset (F821)


231-231: Undefined name CellTrackingDataset (F821)


302-302: Undefined name dreem (F821)


397-401: Use ternary operator trainer_params = self.cfg.trainer if "trainer" in self.cfg else {} instead of if-else-block (SIM108)

Replace if-else-block with trainer_params = self.cfg.trainer if "trainer" in self.cfg else {}

dreem/datasets/data_utils.py

7-7: cElementTree is deprecated, use ElementTree (UP023)

Replace with ElementTree


267-267: Use context handler for opening files (SIM115)


388-391: Use contextlib.suppress(Exception) instead of try-except-pass (SIM105)

Replace with contextlib.suppress(Exception)


390-390: Do not use bare except (E722)

dreem/io/frame.py

57-57: Undefined name Instance (F821)


58-58: Undefined name AssociationMatrix (F821)


299-299: Undefined name Instance (F821)


308-308: Undefined name Instance (F821)


338-338: Undefined name AssociationMatrix (F821)


357-357: Undefined name AssociationMatrix (F821)


553-553: Use key in dict instead of key in dict.keys() (SIM118)

Remove .keys()

dreem/inference/tracker.py

124-124: No explicit stacklevel keyword argument found (B028)


124-124: f-string without any placeholders (F541)

Remove extraneous f prefix


152-152: No explicit stacklevel keyword argument found (B028)


160-160: No explicit stacklevel keyword argument found (B028)


169-169: No explicit stacklevel keyword argument found (B028)


174-174: Loop control variable i not used within loop body (B007)

Rename unused i to _i


178-178: Loop control variable i not used within loop body (B007)

Rename unused i to _i


180-180: Undefined name curr_track (F821)


180-180: Local variable curr_track is assigned to but never used (F841)


455-455: Avoid extraneous parentheses (UP034)

Remove extraneous parentheses

dreem/models/transformer.py

144-144: Undefined name dreem (F821)


145-145: Undefined name dreem (F821)

dreem/io/instance.py

93-93: Undefined name Frame (F821)


212-212: Do not use mutable data structures for argument defaults (B006)

Replace with None; initialize within function


243-243: Within an except clause, raise exceptions with raise ... from err or raise ... from None to distinguish them from errors in exception handling (B904)


290-293: Return the condition not self._gt_track_id.shape[0] == 0 directly (SIM103)

Replace with return not self._gt_track_id.shape[0] == 0


322-325: Return the negated condition directly (SIM103)

Inline condition


362-365: Return the condition not self._bbox.shape[1] == 0 directly (SIM103)

Replace with return not self._bbox.shape[1] == 0


432-435: Return the condition not self._crop.shape[-1] == 0 directly (SIM103)

Replace with return not self._crop.shape[-1] == 0


470-473: Return the condition not self._features.shape[-1] == 0 directly (SIM103)

Replace with return not self._features.shape[-1] == 0


520-520: Undefined name Frame (F821)


529-529: Undefined name Frame (F821)

Additional comments not posted (17)
dreem/models/visual_encoder.py (1)

60-60: Well-implemented method handling different backends. Good use of error handling to guide the user.

dreem/models/global_tracking_transformer.py (1)

49-55: Excellent addition of detailed documentation for embedding_meta. This enhances clarity and usability.

dreem/inference/post_processing.py (2)

94-94: Good practice to specify return types for better clarity and type checking.


129-129: Specifying return types enhances clarity and aids in type checking. Good addition.

dreem/datasets/base_dataset.py (2)

125-125: Specifying return types is a good practice. Well done on maintaining consistency.


141-141: Consistent use of return type specification across methods enhances clarity and maintainability.

dreem/datasets/microscopy_dataset.py (2)

109-109: LGTM! The method get_indices correctly returns a tuple as expected.


Line range hint 173-174: Combine nested if statements for clarity and performance.
[REFACTOR_SUGGESTion]

- if len(img.shape) == 2:
-     img = img.unsqueeze(0)
- elif len(img.shape) == 3:
-     if img.shape[2] == 3:
-         img = img.T  # todo: check for edge cases
+ if len(img.shape) == 2:
+     img = img.unsqueeze(0)
+ elif len(img.shape) == 3 and img.shape[2] == 3:
+     img = img.T  # todo: check for edge cases
dreem/models/model_utils.py (3)

173-173: Ensure the logger type is correctly handled, including case sensitivity.

Verification successful

The init_logger function in dreem/models/model_utils.py checks if the logger_type is in the list of valid loggers, which ensures that the logger type is handled correctly. The usage in dreem/io/config.py passes the logger_params correctly to init_logger.

  • dreem/models/model_utils.py:

    def init_logger(logger_params: dict, config: dict = None) -> loggers.Logger:
        """Initialize logger based on config parameters.
    
        Allows more flexibility in choosing which logger to use.
    
        Args:
            logger_params: logger hyperparameters
            config: rest of hyperparameters to log (mostly used for WandB)
    
        Returns:
            logger: A logger with specified params (or None).
        """
        logger_type = logger_params.pop("logger_type", None)
    
        valid_loggers = [
            "CSVLogger",
            "TensorBoardLogger",
            "WandbLogger",
        ]
    
        if logger_type in valid_loggers:
  • dreem/io/config.py:

    from dreem.models.model_utils import init_logger
    
    logger_params = OmegaConf.to_container(self.cfg.logging, resolve=True)
    
    return init_logger(
        logger_params, OmegaConf.to_container(self.cfg, resolve=True)
    )

The logger type is correctly handled in the init_logger function.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify that the logger type is handled correctly in all cases.

# Test: Search for usage of `init_logger`. Expect: Correct handling of logger type.
rg --type python $'init_logger'

Length of output: 61



Script:

#!/bin/bash
# Description: Verify that the logger type is handled correctly in all cases.

# Step 1: Search for the definition of `init_logger`.
rg 'def init_logger'

# Step 2: Search for all usages of `init_logger` in the codebase.
rg 'init_logger'

Length of output: 372



Script:

#!/bin/bash
# Description: Extract the implementation of `init_logger` and its usage to verify logger type handling.

# Step 1: Extract the implementation of `init_logger`.
rg -A 20 'def init_logger' dreem/models/model_utils.py

# Step 2: Extract the usage of `init_logger` in `dreem/io/config.py`.
rg -A 10 'init_logger' dreem/io/config.py

Length of output: 1223


96-96: Ensure the optimizer name is correctly handled, including case sensitivity.


133-135: Ensure the scheduler name is correctly handled, including case sensitivity.

Verification successful

The YAML configuration files contain scheduler configurations with a "name" key, which indicates that the scheduler names are handled correctly. This confirms that the init_scheduler function should correctly initialize the scheduler based on the provided configuration.

  • dreem/training/configs/base.yaml and tests/configs/base.yaml both include a scheduler section with a "name" key, ensuring that the scheduler name is specified and can be correctly interpreted by the init_scheduler function.

No issues were found with the handling of scheduler names in the provided configurations.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify that the scheduler name is handled correctly in all cases.

# Test: Search for usage of `init_scheduler`. Expect: Correct handling of scheduler name.
rg --type python $'init_scheduler'

Length of output: 64



Script:

#!/bin/bash
# Description: Verify that the scheduler name is handled correctly in all cases.

# Test: Search for usage of `init_scheduler`. Expect: Correct handling of scheduler name.
rg --type py 'init_scheduler'

Length of output: 429



Script:

#!/bin/bash
# Extract relevant lines from files where `init_scheduler` is used.

# Extract lines around the usage in `dreem/models/gtr_runner.py`
rg -A 5 -B 5 'init_scheduler' dreem/models/gtr_runner.py

# Extract lines around the usage in `dreem/io/config.py`
rg -A 5 -B 5 'init_scheduler' dreem/io/config.py

Length of output: 1295



Script:

#!/bin/bash
# Search for definitions and usages of `self.scheduler_cfg` and `lr_scheduler_params`.

# Search for `self.scheduler_cfg` in `dreem/models/gtr_runner.py`
rg 'self.scheduler_cfg' dreem/models/gtr_runner.py

# Search for `lr_scheduler_params` in `dreem/io/config.py`
rg 'lr_scheduler_params' dreem/io/config.py

Length of output: 357



Script:

#!/bin/bash
# Search for definitions and usages of `scheduler_cfg` and `self.cfg.scheduler`.

# Search for `scheduler_cfg` in the repository
rg 'scheduler_cfg'

# Search for `self.cfg.scheduler` in the repository
rg 'self.cfg.scheduler'

Length of output: 786



Script:

#!/bin/bash
# Extract the content of `self.cfg.scheduler` in `dreem/io/config.py`.

# Extract lines around the usage of `self.cfg.scheduler` in `dreem/io/config.py`
rg -A 5 -B 5 'self.cfg.scheduler' dreem/io/config.py

Length of output: 851



Script:

#!/bin/bash
# Search for the definition and structure of `self.cfg` in `dreem/io/config.py`.

# Search for `self.cfg` in `dreem/io/config.py`
rg 'self.cfg' dreem/io/config.py

Length of output: 1708



Script:

#!/bin/bash
# Search for the definitions of `base_cfg` and `params_cfg` in `dreem/io/config.py`.

# Search for `base_cfg` in `dreem/io/config.py`
rg 'base_cfg' dreem/io/config.py

# Search for `params_cfg` in `dreem/io/config.py`
rg 'params_cfg' dreem/io/config.py

Length of output: 1033



Script:

#!/bin/bash
# Search for the YAML files and extract their content.

# Find YAML files in the repository
fd --type f --extension yaml

# Extract content of the YAML files
for file in $(fd --type f --extension yaml); do
  echo "Content of $file:"
  cat "$file"
  echo ""
done

Length of output: 8839

dreem/datasets/cell_tracking_dataset.py (1)

108-108: LGTM! The method get_indices correctly returns a tuple as expected.

dreem/io/frame.py (2)

Line range hint 299-299: Repeated issue: Undefined name 'Instance'.

This issue has been flagged previously. Ensure that Instance is correctly imported to resolve all occurrences.

Also applies to: 308-308


Line range hint 338-338: Repeated issue: Undefined name 'AssociationMatrix'.

This issue has been flagged previously. Ensure that AssociationMatrix is correctly imported to resolve all occurrences.

Also applies to: 357-357

docs/usage.md (1)

219-220: Use "an" instead of "a" before words that start with a vowel sound.

- 1. a `ckpt_path` 2. a `out_dir`
+ 1. an `ckpt_path` 2. an `out_dir`

Likely invalid or redundant comment.

Tools
LanguageTool

[misspelling] ~219-~219: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...et up a config file that specifies 1. a ckpt_path 2. a out_dir 3. a `Tracke...


[misspelling] ~220-~220: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...le that specifies 1. a ckpt_path 2. a out_dir 3. a Tracker config 4. a `d...

docs/configs/training.md (2)

187-195: Verify the backend compatibility and model availability.

Ensure that all models specified in the documentation are available in the respective libraries (timm and torchvision). This script lists all available models, which should be cross-referenced with the documentation.

Tools
LanguageTool

[style] ~194-~194: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...i-anchor crops * pretrained: (bool) Whether or not to use a pretrained backbone or initial...


359-372: Check for potential data races in tracker configurations.

Given the complexity of tracker configurations, especially in potentially multi-threaded environments, verify that the implementation handles data races or state inconsistencies.

Tools
LanguageTool

[uncategorized] ~362-~362: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...m/inference/tracker.md) * window_size: the size of the window used during slid...


[uncategorized] ~363-~363: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ing sliding inference. * use_vis_feats: Whether or not to use visual feature ex...


[style] ~363-~363: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...g sliding inference. * use_vis_feats: Whether or not to use visual feature extractor. * `ove...


[uncategorized] ~364-~364: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...al feature extractor. * overlap_thresh: the trajectory overlap threshold to be ...


[uncategorized] ~365-~365: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... be used for assignment. * mult_thresh: Whether or not to use weight threshold....


[style] ~365-~365: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...e used for assignment. * mult_thresh: Whether or not to use weight threshold. * decay_time...


[uncategorized] ~366-~366: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ... to use weight threshold. * decay_time: weight for decay_time postprocessing....


[uncategorized] ~367-~367: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...for decay_time postprocessing. * iou: Either {None, '', "mult" or "max"}. W...


[uncategorized] ~368-~368: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...max iou reweighting. * max_center_dist: distance threshold for filtering trajec...


[uncategorized] ~369-~369: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ry score matrix. * persistent_tracking: whether to keep a buffer across chunks ...


[uncategorized] ~370-~370: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...buffer across chunks or not. * max_gap: the max number of frames a trajectory c...


[uncategorized] ~371-~371: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...ssing before termination. * max_tracks: the maximum number of tracks that can b...

Similar to training, we need to set up a config file that specifies
1. a `ckpt_path`
2. a `out_dir`
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct article usage.

- a `out_dir`
+ an `out_dir`
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
2. a `out_dir`
2. an `out_dir`
Tools
LanguageTool

[misspelling] ~252-~252: Use “an” instead of ‘a’ if the following word starts with a vowel sound, e.g. ‘an article’, ‘an hour’. (EN_A_VS_AN)
Context: ...ile that specifies 1. a ckpt_path 2. a out_dir 3. a Tracker config 4. a `d...


##### Step 1.1: Get Initial labels
To generate your initial labels we recommend a couple methods.
- For animal pose-estimation, we highly recommend heading over to [SLEAP](https://sleap.ai) and running through their work flow.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct the term "workflow" for accuracy.

- running through their work flow.
+ running through their workflow.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
- For animal pose-estimation, we highly recommend heading over to [SLEAP](https://sleap.ai) and running through their work flow.
- For animal pose-estimation, we highly recommend heading over to [SLEAP](https://sleap.ai) and running through their workflow.
Tools
LanguageTool

[uncategorized] ~85-~85: Write this as one word if you mean the noun “workflow”. (WORK_COMPOUNDS)
Context: ...s://sleap.ai) and running through their work flow. - For microscopy tracking, check out...

Markdownlint

85-85: Expected: 0; Actual: 1 (MD007, ul-indent)
Unordered list indentation


85-85: Expected: 0 or 2; Actual: 1 (MD009, no-trailing-spaces)
Trailing spaces


85-85: null (MD032, blanks-around-lists)
Lists should be surrounded by blank lines


## Usage

Here we describe a basic workflow from setting up data thru training and running inference. Regardless if you're only interested in running inference, we recommend at least skimming thru the entire tutorial as there may be useful information that applies to both training and inference!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Replace informal language for professionalism.

- Here we describe a basic workflow from setting up data thru training and running inference.
+ Here we describe a basic workflow from setting up data through training and running inference.
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
Here we describe a basic workflow from setting up data thru training and running inference. Regardless if you're only interested in running inference, we recommend at least skimming thru the entire tutorial as there may be useful information that applies to both training and inference!
Here we describe a basic workflow from setting up data through training and running inference. Regardless if you're only interested in running inference, we recommend at least skimming thru the entire tutorial as there may be useful information that applies to both training and inference!
Tools
LanguageTool

[style] ~42-~42: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...e a basic workflow from setting up data thru training and running inference. Regardl...


[style] ~42-~42: The word ‘thru’ is informal. Consider replacing it with “through”. (THRU)
Context: ...ference, we recommend at least skimming thru the entire tutorial as there may be use...

- For animal pose-estimation, we highly recommend heading over to [SLEAP](https://sleap.ai) and running through their work flow.
- For microscopy tracking, check out [TrackMate](https://imagej.net/plugins/trackmate/).

This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](dreem/datasets/sleap_dataset.py) and [microscopy](dreem/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data compatible with `dreem` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct abbreviation usage and punctuation.

- you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest
+ you'd like to use a different method (e.g., DeepLabCut or ilastik, etc.), the easiest
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](dreem/datasets/sleap_dataset.py) and [microscopy](dreem/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data compatible with `dreem` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
This is because these methods will handle both the detection and tracking steps together. Furthermore, these are currently the two main label formats we support in our data pipelines for arbitrary [animal](dreem/datasets/sleap_dataset.py) and [microscopy](dreem/datasets/microscopy_dataset.py) datasets. If you'd like to use a different method (e.g., DeepLabCut or ilastik, etc.), the easiest way to make your data compatible with `dreem` is to convert your labels to a `.slp` file and your video to an [`imageio`-supported]((https://imageio.readthedocs.io/en/v2.4.1/formats.html)) video format. See the next section for more information on how to do this. Alternatively, you can write a custom dataloader but that will take significantly more overhead.
Tools
LanguageTool

[uncategorized] ~88-~88: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ... you'd like to use a different method, (e.g DeepLabCut or ilastik etc), the easiest...


[style] ~88-~88: In American English, abbreviations like “etc.” require a period. (ETC_PERIOD)
Context: ...rent method, (e.g DeepLabCut or ilastik etc), the easiest way to make your data com...


[uncategorized] ~88-~88: Use a comma before ‘but’ if it connects two independent clauses (unless they are closely connected and short). (COMMA_COMPOUND_SENTENCE_2)
Context: ...ively, you can write a custom dataloader but that will take significantly more overh...

We recommend using the [`sleap-label` gui](https://sleap.ai/guides/gui.html) for [proofreading](https://sleap.ai/guides/proofreading.html#id1). This is because SLEAP's in-built gui provides useful. functionality for visualizing detections, moving them, and reassigning tracks. It also provides some nice heuristics for flagging where switches may have occured.

###### Converting data to a SLEAP compatible format.
In order to use the SLEAP gui you'll need to have your labels and videos in a SLEAP comptabile format. Check out [the sleap-io docs](https://io.sleap.ai/latest/formats/) for available formats. The easiest way to ensure your labels are compatible with sleap is to convert them to a `.slp` file. For animal tracking, if you used SLEAP, this is already how SLEAP saves your labesl so you can start proofreading right away. Otherwise if you used a different system (e.g DeepLabCut) check out [`sleap.io.convert`](https://sleap.ai/api/sleap.io.convert.html#module-sleap.io.convert) for available converters. With microscopy, we highly recommend starting out with TrackMate and then proofread in SLEAP's gui. Here is [a converter from trackmate's output to a `.slp`](https://gist.github.com/aaprasad/5243be0785a40e9dafa1697ce2258e3e) file. In general, you can use [`sleap-io`](https://io.sleap.ai/latest/) to write a custom converter to `.slp` if you'd like to use the sleap-gui for proofreading. Once you've ensured that your labels files have no identity switches and your detections are as good as you're willing to make them, they're ready to use for training.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct abbreviation and punctuation.

- Otherwise if you used a different system (e.g DeepLabCut) check out
+ Otherwise, if you used a different system (e.g., DeepLabCut), check out
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
In order to use the SLEAP gui you'll need to have your labels and videos in a SLEAP comptabile format. Check out [the sleap-io docs](https://io.sleap.ai/latest/formats/) for available formats. The easiest way to ensure your labels are compatible with sleap is to convert them to a `.slp` file. For animal tracking, if you used SLEAP, this is already how SLEAP saves your labesl so you can start proofreading right away. Otherwise if you used a different system (e.g DeepLabCut) check out [`sleap.io.convert`](https://sleap.ai/api/sleap.io.convert.html#module-sleap.io.convert) for available converters. With microscopy, we highly recommend starting out with TrackMate and then proofread in SLEAP's gui. Here is [a converter from trackmate's output to a `.slp`](https://gist.github.com/aaprasad/5243be0785a40e9dafa1697ce2258e3e) file. In general, you can use [`sleap-io`](https://io.sleap.ai/latest/) to write a custom converter to `.slp` if you'd like to use the sleap-gui for proofreading. Once you've ensured that your labels files have no identity switches and your detections are as good as you're willing to make them, they're ready to use for training.
In order to use the SLEAP gui you'll need to have your labels and videos in a SLEAP comptabile format. Check out [the sleap-io docs](https://io.sleap.ai/latest/formats/) for available formats. The easiest way to ensure your labels are compatible with sleap is to convert them to a `.slp` file. For animal tracking, if you used SLEAP, this is already how SLEAP saves your labesl so you can start proofreading right away. Otherwise, if you used a different system (e.g., DeepLabCut) check out [`sleap.io.convert`](https://sleap.ai/api/sleap.io.convert.html#module-sleap.io.convert) for available converters. With microscopy, we highly recommend starting out with TrackMate and then proofread in SLEAP's gui. Here is [a converter from trackmate's output to a `.slp`](https://gist.github.com/aaprasad/5243be0785a40e9dafa1697ce2258e3e) file. In general, you can use [`sleap-io`](https://io.sleap.ai/latest/) to write a custom converter to `.slp` if you'd like to use the sleap-gui for proofreading. Once you've ensured that your labels files have no identity switches and your detections are as good as you're willing to make them, they're ready to use for training.
Tools
LanguageTool

[uncategorized] ~100-~100: A comma may be missing after the conjunctive/linking adverb ‘Otherwise’. (SENT_START_CONJUNCTIVE_LINKING_ADVERB_COMMA)
Context: ... you can start proofreading right away. Otherwise if you used a different system (e.g Dee...


[uncategorized] ~100-~100: The abbreviation “e.g.” (= for example) requires two periods. (E_G)
Context: ...herwise if you used a different system (e.g DeepLabCut) check out [`sleap.io.conver...

"""Retrieve label and frame indices given batch index.

Args:
idx: the index of the batch.
"""
return self.label_idx[idx], self.chunked_frame_idx[idx]

def get_instances(self, label_idx: List[int], frame_idx: List[int]) -> list[dict]:
def get_instances(self, label_idx: List[int], frame_idx: List[int]) -> list[Frame]:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Enhance error handling in get_instances.

Add more robust error handling for cases where data cannot be read or processed correctly, such as when frames cannot be read from the video.

@@ -449,7 +449,7 @@ def close(self):
self.file.close()


def build_augmentations(augmentations: dict):
def build_augmentations(augmentations: dict) -> A.Compose:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Validate augmentation parameters in build_augmentations.

Ensure that the augmentation parameters are valid and handle cases where invalid parameters are provided to prevent runtime errors.

Comment on lines +82 to +84
#### `augmentations`:

This subsection contains params for albumentations. See [`albumentations`](https://albumentations.ai) for available visual augmentations. Other available augmentations include `NodeDropout` and `InstanceDropout`. Keys must match augmentation class name exactly and contain subsections with parameters for the augmentation
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The description of augmentations could be enhanced by specifying examples of NodeDropout and InstanceDropout.

Would you like me to add examples for NodeDropout and InstanceDropout in the documentation?

Tools
LanguageTool

[uncategorized] ~82-~82: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...... ... ... ``` #### augmentations: This subsection contains params for al...

Markdownlint

82-82: Expected: 1; Actual: 0; Above (MD022, blanks-around-headings)
Headings should be surrounded by blank lines


82-82: Punctuation: ':' (MD026, no-trailing-punctuation)
Trailing punctuation in heading

Comment on lines +101 to +103
* a string indicating a single node to center crops around
* a list of skeleton node names to be used as the center of crops
* an int indicating the number of anchors to randomly select
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fix indentation issues in the unordered list to maintain consistency and readability.

-    * a string indicating a single node to center crops around
-    * a list of skeleton node names to be used as the center of crops
-    * an int indicating the number of anchors to randomly select
+  * a string indicating a single node to center crops around
+  * a list of skeleton node names to be used as the center of crops
+  * an int indicating the number of anchors to randomly select
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
* a string indicating a single node to center crops around
* a list of skeleton node names to be used as the center of crops
* an int indicating the number of anchors to randomly select
* a string indicating a single node to center crops around
* a list of skeleton node names to be used as the center of crops
* an int indicating the number of anchors to randomly select
Tools
Markdownlint

101-101: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


102-102: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation


103-103: Expected: 2; Actual: 4 (MD007, ul-indent)
Unordered list indentation

Comment on lines +53 to +55
* `padding`: An `int` representing the amount of padding to be added to each side of the bounding box size
* `crop_size`: (`int`|`tuple`) the size of the bounding box around which a crop will form.
* `chunk`: Whether or not to chunk videos into smaller clips to feed to model
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tip

Codebase Verification

The search results indicate that the chunk parameter is indeed implemented in various dataset modules, such as sleap_dataset.py, microscopy_dataset.py, cell_tracking_dataset.py, and base_dataset.py. The descriptions and usage of chunk across these files suggest that it is used to determine whether to divide the dataset into smaller batches or chunks.

  • Locations in the codebase:
    • dreem/datasets/sleap_dataset.py
    • dreem/datasets/microscopy_dataset.py
    • dreem/datasets/cell_tracking_dataset.py
    • dreem/datasets/base_dataset.py

The description in the documentation should be clear about this functionality, indicating that chunk determines whether the dataset should be divided into smaller batches for processing.

Analysis chain

Ensure that the description of chunk is clear about its functionality.

Scripts executed

The following scripts were executed for the analysis:


Script:

#!/bin/bash
# Description: Verify the implementation of chunking in the dataset.
# Test: Search for the chunk implementation in the dataset module.
rg --type python $'chunk' src/dreem/datasets

Length of output: 74



Script:

#!/bin/bash
# Description: Verify the implementation of chunking in the dataset.
# Test: Search for the chunk implementation in the dataset module.
rg --type py 'chunk' src/dreem/datasets

Length of output: 98



Script:

#!/bin/bash
# Description: Locate the correct directory path for the dataset module and verify the implementation of chunking.
# Step 1: Locate the dataset module directory.
dataset_dir=$(fd datasets | head -n 1)

# Step 2: Verify the implementation of chunking in the located dataset module directory.
if [ -n "$dataset_dir" ]; then
  rg 'chunk' "$dataset_dir"
else
  echo "Dataset module directory not found."
fi

Length of output: 6059

Tools
LanguageTool

[uncategorized] ~53-~53: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...asets/base_dataset.md) args * padding: An int representing the amount of pad...


[uncategorized] ~55-~55: Loose punctuation mark. (UNLIKELY_OPENING_PUNCTUATION)
Context: ...around which a crop will form. * chunk: Whether or not to chunk videos into sma...


[style] ~55-~55: Consider shortening this phrase to just ‘whether’, unless you mean ‘regardless of whether’. (WHETHER)
Context: ...ound which a crop will form. * chunk: Whether or not to chunk videos into smaller clips to f...

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

Outside diff range and nitpick comments (1)
dreem/io/visualize.py (1)

Line range hint 282-282: Rename unused loop control variable idx to _idx to indicate it's intentionally unused.

-    for idx, (ds_name, data) in enumerate([(save_path, annotated_frames)]):
+    for _idx, (ds_name, data) in enumerate([(save_path, annotated_frames)]):
Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between 5939591 and 5ce73d8.

Files selected for processing (1)
  • dreem/io/visualize.py (2 hunks)
Additional context used
Ruff
dreem/io/visualize.py

282-282: Loop control variable idx not used within loop body (B007)

Rename unused idx to _idx

Additional comments not posted (4)
dreem/io/visualize.py (4)

319-324: Enhance error handling by logging exception details.
[REFACTOR_SUGGESTion]

-        print(e)
+        import logging
+        logging.error("Failed to annotate video: %s", str(e))

319-324: The integration of annotate_video in the main function is handled well.


319-324: The save_vid function is implemented correctly and efficiently.


319-324: The utility functions color and bold are correctly implemented and serve their intended purpose.

Comment on lines +60 to +69
video: "imageio.core.format.Reader",
labels: pd.DataFrame,
key: str,
color_palette=palette,
color_palette: list = palette,
trails: int = 2,
boxes: int = (64, 64),
names: bool = True,
track_scores=0.5,
centroids: int = 4,
poses=False,
poses: bool = False,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add type annotations for new parameters to enhance clarity and maintain consistency.

-    track_scores=0.5,
-    centroids: int = 4,
+    track_scores: float = 0.5,
+    centroids: int = 4,
Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
video: "imageio.core.format.Reader",
labels: pd.DataFrame,
key: str,
color_palette=palette,
color_palette: list = palette,
trails: int = 2,
boxes: int = (64, 64),
names: bool = True,
track_scores=0.5,
centroids: int = 4,
poses=False,
poses: bool = False,
video: "imageio.core.format.Reader",
labels: pd.DataFrame,
key: str,
color_palette: list = palette,
trails: int = 2,
boxes: int = (64, 64),
names: bool = True,
track_scores: float = 0.5,
centroids: int = 4,
poses: bool = False,

@talmo talmo merged commit 25b6d96 into main Jun 11, 2024
3 checks passed
@talmo talmo deleted the aadi/documentation branch June 11, 2024 07:15
@aaprasad aaprasad mentioned this pull request Jun 11, 2024
Closed
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants